========================================================================
-
概念:在同一个类中,允许存在一个或一个以上的同名方法,只要他们的参数个数或参数类型不同即可
-
跟方法的权限修饰符,返回值类型,形参变量名,方法体都没关系
-
对象调用时,判断指定方法
-
方法名
-
参数列表
- 示例:
public class test4 {
public static void main(String[] args) {
Add sum1=new Add();
System.out.println(sum1.add(1,1));
//2
System.out.println(sum1.add(1,“1”));
//11
}
}
class Add{
public int add(int i,int j){
return i + j;
}
public String add(int i,String j){
return i + j;
}
//(参数列表不同)
}
-
JDK 5.0新增方法
-
格式(数据类型 … 变量名)
-
当可变形参方法与确定形参方法重名时,会优先调用确定形参方法
-
可变形参必须声明在方法的末尾
-
在方法中只能有一个可变形参
-
示例:
public class test4 {
public static void main(String[] args) {
Variable a=new Variable();
a.show();
//可变形参
a.show(“hello”);
//可变形参hello
a.show(“hello”,“world”);
//可变形参helloworld
}
}
class Variable{
public void show(String … i){
System.out.println(“可变形参”);
for (int j=0;j<arr.length;j++){
System.out.print(arr[j]);
}
}
}
- 变量的赋值
-
如果变量赋值是基本数据类型,就是把值复制一份给他
-
如果变量赋值是引用数据类型,就是把保存的数据的地址赋给他
- 形参的赋值与变量赋值一致
- 参数是基本数据类型,那么就是把真实存储数据值传给形参
public class test5 {
public static void main(String[] args) {
int m=10;
int n=20;
test5 a=new test5();
a.exchange(m,n);
System.out.println(“交换后” + m + n);
//1020 可以发现并没有交换成功
}
public void exchange(int i,int j){
int temp=i;
i=j;
j=temp;
}
}
可以发现调用方法后交换失败,这是因为传参时是把真是的真实存储的值传了过去,虽然传过去的值交换了,但对于main中的数据,没有影响,还是之前的值
2. 如果参数是引用数据类型,就是把保存数据的地址赋给了形参
//上面交换正确写法
public class Test5 {
public static void main(String[] args) {
Num num=new Num();
num.m=10;
num.n=20;
Test5 a=new Test5();
a.exchange(num);
System.out.println(“交换后” + num.m + num.n);
//2010
}
public void exchange(Num num){
int temp=num.m;
num.m=num.n;
num.n=temp;
}
}
class Num{
int m;
int n;
}