JavaSE- 方法
- 方法的重载
- 可变形参的方法
- 方法参数的值传递机制
- 递归方法
方法重载:
-
在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可
-
与返回值无关,只看参数列表且参数列表必须不同(参数个数或参数类型)
调用时,根据方法参数列表的不同来区别
以下方法都是重载:
public void getsum(int i , int j){
System.out.println(i + j);
}
public void getsum(double i ;double j){
System.out.println(i + j);
}
public void getsum(String i ,int i){
System.out.println(i + j);
}
public void getsum(int i ,String j){
System.out.println(i + j);
}
-
即使是参数列表顺序不同,也构成重载,根据传递参数顺序调用具体的函数
-
跟方法的权限修饰符,返回值类型,形参变量名,方法体都无关
-
通过对象调用方法时,如何确定某一指定方法:
先看方法名,如果有重载,再根据参数列表判断(方法名------>参数列表)
可变个数的形参:
1.JDK5.0新增内容,调用可变个数形参时,可以传入多个参数
2.具体使用:
格式:变量类型…形参变量名,eg:
public void show(String ... str){
return 0;
}
//调用时可以同时传递多个参数
test.show("hello","world","he");
- JDK5.0以前需要传递多个参数时,使用的是数组,因此可变形参新特性不能续数组共存(会构成重载)
//以下方法构成重载(表示的是同一个东西)
public void (String[] arr){
}
public void (String ... arr){
}
方法的形参传递机制:值传递
- 机制:如果参数是引用数据类型,此时实参赋给形参的是实参存储数据的地址
swap(a,b);
只有参数类类型为引用数据类型(类的对象)时才能交换,eg:
class Data{
int m;
int n;
}
punlic static void main(String[] args){
Data data = new Data();
data.m = 10;
data.n = 20;
v.swap(data);
System.out.println(data m , data n);
}
swap(Data data){
int temp = data.m;
data.m = data.n;
data.n = temp;
}
-
关于变量赋值:
如果变量是基本数据类型,此时传递的是保存数据的值
如果变量是引用数据类型,此时传递的是保存数据的地址
递归方法
方法内调用方法本身,例如,斐波那契数列,汉诺塔问题