在日常的程序开发中,经常会遇到这样的情况,程序的某个功能需要被多次执行,不定义相关的方法的话,每次需要执行该功能就需要我们写相关代码,耗时耗力,且程序代码重复度较高,这是很不好的情况。对于这些重复的操作我们就可以定义一个方法来实现,在每次需要执行操作的时候,调用该方法就好了。
另外Java中的方法与很大编程语言中提及的函数是一个概念,所有不需要纠结于名称,了解使用方法才是最重要的,此外需要注意的一点是:Java中方法是在主类中定义,并且由主方法直接调用的
这里将的方法都是在主类中定义的,常用的定义格式如下
public static 返回值类型 方法名称([数据类型 变量名, …]) {
//执行的操作
[return [返回值]]
}
解释:
public是权限修饰符,这里先记住public其他的后面再介绍
static表明是静态方法,这是主类中定义的方法且被主方法直接调用必须由的一个修饰符
返回值类型可以是Java中所有的数据类型(基本和引用数据类型都可以),没有返回值则用void关键字
方法名称,和变量的命名规则一致(第一个单词首字母小写其余的单词首字母大写),且最好方法名称是有意义让人看得明白的
()中的内容为方法的参数,可以没有,也可以由很多个
{}中的内容是该方法需要完成的操作
return表明该方法的返回数据,必须与声明时的类型一致,不写默认返回空,且只要执行到return语句方法的执行自动结束,不会再执行return后面的语句
示例1:无参无返回值的方法
public class Demo { public static void main(String[] args) { // 无参无返回值的方法定义使用 System.out.println("第一次调用方法"); sayHello(); System.out.println("第二次调用方法"); sayHello(); } public static void sayHello() { // 方法作用:输出hello world System.out.println("hello world"); } }
示例2:有参有返回值的参数
public class Demo { public static void main(String[] args) { // 实现指数运算 System.out.println("2的3次方为:" + pow(2, 3)); System.out.println("5的3次方为:" + pow(5, 3)); System.out.println("4的7次方为:" + pow(4, 7)); } public static int pow(int x, int y) { // 实现指数运算x^y int res = 1; // 记录每一次的结果 // for循环,每一次乘以一遍自身 for (int i = 1; i <= y; i++) { res *= x; } return res; // 返回结果 } }
在实际中还有这样一种情况,对于一个方法我们会有不同的使用需求,不同的定义,这就需要用到方法重载的方式
方法重载定义:当方法的名称相同,但是参数的类型或者个数不同的时候就称为方法重载
示例:实现数据的相加
public class Demo { public static void main(String[] args) { System.out.println("1+2+3 = " + add(1, 2, 3)); System.out.println("13.0+12.5 = " + add(13.0, 12.5)); System.out.println("1+4 = " + add(1, 4)); } // 实现两个整数相加 public static int add(int x, int y) { return x + y; } // 两个小数相加 public static double add(double x, double y) { return x + y; } // 三个整数相加 public static int add(int a, int b, int c) { return a + b + c; } }
从上面的程序可以看出,方法的重载与方法的返回值无关,但是在实际开发中还是建议将返回值设置为一样的类型
方法的返回值类型必须和方法定义的返回值类型一致。
对于什么情况需要定义方法:这里的建议时再程序中友的操作代码会被多次使用,可以考虑定义方法来减少代码量。