本篇主要介绍Java语言中的方法。
方法
方法,也称为函数,用于封装一段特定功能的代码,主要是为了方便这段功能代码的调用,减少代码的重复。
方法有五个要素:修饰符、返回值类型、方法名、参数列表和方法体。
10.1 方法定义的语法
方法定义的语法如下:
修饰符 返回值类型 方法名(参数列表){
//方法体代码
}
10.2 修饰符
Java方法的修饰符有四种,public、protected、default和private。
访问权限范围越小,安全性越高。
10.2.1 public
public修饰符修饰的方法,又称公有类型,在该工程中的任何地方都可以访问的到,具有最高的访问权限。
10.2.2 protected
protected修饰符修饰的方法,又称保护类型,在类内部、同一个包下、子类中可以访问。
10.2.3 default
default修饰的,又称默认类型(注意,default类型是指不写任何修饰符,默认为default修饰)在类内部和同一个包下可以访问。(不推荐使用)
10.2.4 private
private修饰符,又称私有类型,仅在当前类的内部能够访问。
10.3 返回值类型
返回值类型是指方法执行完后,返回给方法调用者的数值的类型。可以是基本数据类型,也可以是引用类型,如果方法不需要返回数值,则返回值类型必须写void。
10.3.1 return
方法体的代码中,使用return返回数据给调用者。
return的注意事项:
1)方法体中执行return后,剩余的代码不再执行。
2)return后的返回值要与方法定义的返回值类型兼容(所谓兼容,是指相同或者可以自动发生类型转换)。
3)如果方法中有分支流程,要保证每一个分支都能执行return。
4)如果一个方法定义为void类型,则编译器在方法体的最后会加一个隐式的return。
比如:
public static long add(int a,int b){
return a+b;
}
上述代码中,虽然方法体中return的a+b的结果是int类型,但是,由于int->long之间是可以自动类型转换,这种情况,我们称return的数据类型与返回值类型是兼容的。
10.4 方法名
方法名也叫函数名,一般方法的命名需要遵循如下编程规范:
1)方法名使用小驼峰命名(首单词首字母小写,其他单词首字母大写)
2)方法名长度适中,最好在12字母以下
3)方法名要明确反映出方法的主要功能
4)方法名要有强烈的动作色彩,比如getStudentInfo()、saveUserInfo()等
10.5 参数列表
10.5.1 参数列表语法
参数列表是方法定义时,写在小括号中的参数,语法格式如下:
类型1 参数1,类型2 参数2,...,类型n 参数n
其中,
1)参数可以为多个,也可以为0个;
2)参数列表中的参数,称为形参;
3)多个参数之间用逗号隔开;
4)参数列表的参数个数五个以下为最佳
比如:
public int add(int num1,int num2){
return num1+num2;
}
上述代码中,方法add的参数列表中有两个形参,int类型的num1和num2,之间用逗号隔开。
10.5.2 可变参数列表
在实际应用中,如果同一功能,但是传入的参数个数不同,需要写多个方法。比如,需要求两个整数的和,三个整数的和,四个整数的和。。。,这种相同功能,相同参数类型,但参数个数不同,Java给开发者提供了一种解决方案–可变参数列表。
可变参数,是指开发者调用该方法的时候,该参数可以传0个或者多个。
可变参数的语法如下:
类型...可变参数名
应用如下:
public static void main(String[] args){
System.out.println(add());//输出0
System.out.println(add(1));//输出1
System.out.println(add(1,2));//输出3
System.out.println(add(1,2,3,4));//输出10
}
public static int add(int...nums){
int sum = 0;
for(int num:nums){
sum += num;
}
return sum;
}
案例分析:
上述代码中,add方法定义了一个可变参数列表,其中nums为可变参数,调用add方法时,可以传入0个或者多个int类型的参数。其本质是java将调用时传入的可变参数放入了名称为nums的数组中,在方法体使用时,直接遍历该数组,即可访问到所有传入的参数。
如果参数列表中既有可变参数还有不可变参数,那么可变参数只能放在最后,否则会出现编译错误。
public static int add(int...nums,int a){
int sum = 0;
for(int num:nums){
sum += num;
}
sum += a;
return sum;
}
上述代码会产生编译错误,参数列表中有不可变参数a,和可变参数nums,正确的形式应该是(int a,int…nums)
注意:
1)可变参数只能放在参数列表的最后一个
2)可变参数列表只能允许有一个可变的参数,不能有多个可变参数
3)可变参数,实际是编译器将可变参数放入了数组中传给方法,因此,传入的可变参数的类型必须是同种类型(或者类型兼容)。
10.6 方法体
方法体是指方法的具体的功能实现,即花括号内的代码部分。建议方法体的代码行数不要太长,以三四百行以下为最佳,可读性强。如果功能复杂,超出这个行数标准,可以拆分为多个方法。
下一篇将介绍Java中的面向对象。