方法
方法的定义
Java的方法类似于其它语言的函数,是一段用来完成特定功能的代码片段,一般情况下一个方法包含以下部分:
- 修饰符:定义了该方法的访问类型(可选);
- 返回值类型:方法可能会返回值,returnValueType是方法返回值的数据类型,若不返回值,则returnValueType是关键字void;
- 方法名:方法的名字;
- 参数类型:参数像是一个占位符,当方法被调用时,传递值给参数;
- 方法体:具体的方法语句。
//结构
修饰符 返回值类型 方法名(参数类型 参数名){
...
方法体
...
return 返回值;
}
方法调用
调用方法:对象名.方法名(实参列表)
方法调用时根据方法是否具有返回值来选择不同方式。
//打印两个数中的最大值
public static int max1(int x, int y){
int max = 0;
if(x >= y){
max = x;
}else{
max = y;
}
return max;
}
/*
调用时用
int larger = max1(30, 40);
System.out.println(larger);
*/
public static void max2(int x, int y){
int max = 0;
if(x >= y){
max = x;
}else{
max = y;
}
System.out.println(max);
}
/*
调用时用
max2(30, 40);
*/
//两者均输出40
注:Java都是值传递。
方法的重载
规则
- 方法名称必须相同;
- 参数列表至少一个不同(个数,类型,参数排列顺序等);
- 返回类型可以不同;
- 仅仅返回类型不同不足以成为方法的重载。
实现理论
方法名称相同时,编译器会根据方法的参数列表逐个匹配,选择对应方法;匹配失败则报错。
可变参数
- JDK1.5开始,Java支持传递同类型的可变参数给一个方法;
- 在方法声明中,在指定参数类型后加一个省略号(…);
- 一个方法只能指定一个可变参数,且必须是方法的最后一个参数,任何普通参数都要在它之前声明。
public static void max(double... nums){
if(nums.length == 0){
System.out.println("请正确输入数字!");
}else {
double max = nums[0];
for (int i = 1; i < nums.length; i++) {
if (nums[i] > max) {
max = nums[i];
}
}
System.out.println("最大的数是:" + max);
}
}
/*
max(1,5,47,62,10,5,2); out:最大的数是:62.0
max(); out:请正确输入数字!
*/
递归方法
- 递归需要有一个边界条件,否则会发生溢出;
- 采用栈机制,即每一次未执行完成的方法放在栈中等待被完全执行;
- 由于栈机制的存在,递归的次数不宜过大,否则会崩溃。