利用方法参数做到和做不到的几种情况:
1 方法不能修改基本数据类型(即数字或布尔值)的参数
2方法可以改变对象参数的状态
3方法不能使一个对象参数指向新的对象
public class Test1 {
public Test1(String name,String sex) {
// TODO Auto-generated constructor stub
this.name=name;
this.sex=sex;
}
private String name;
private String sex;
public static void main(String[]args)
{
Test1 A=new Test1("cxd", "nan");
Test1 B=new Test1("dai", "NAN");
System.out.println(A.name);
System.out.println(B.name);
Test1 C=A;
A=B;
B=C;
System.out.println(A.name);
System.out.println(B.name);
}
上述方法可以成功交换A和B指向的内存空间中的数据
然而
public class Test1 {
public Test1(String name,String sex) {
// TODO Auto-generated constructor stub
this.name=name;
this.sex=sex;
}
private String name;
private String sex;
public static void main(String[]args)
{
Test1 A=new Test1("cxd", "nan");
Test1 B=new Test1("dai", "NAN");
System.out.println(A.name);
System.out.println(B.name);
swap(A, B);
System.out.println(A.name);
System.out.println(B.name);
}
static void swap(Test1 a,Test1 b){
Test1 c=new Test1("1","1");
c.name=a.name;
a.name=b.name;
b.name=c.name;
}
}
上述方法也可以成功
然而下述方法不能成功
public class Test1 {
public Test1(String name,String sex) {
// TODO Auto-generated constructor stub
this.name=name;
this.sex=sex;
}
private String name;
private String sex;
public static void main(String[]args)
{
Test1 A=new Test1("cxd", "nan");
Test1 B=new Test1("dai", "NAN");
System.out.println(A.name);
System.out.println(B.name);
swap(A, B);
System.out.println(A.name);
System.out.println(B.name);
}
static void swap(Test1 a,Test1 b){
Test1 c=a;
c.name=a.name;
a.name=b.name;
b.name=c.name;
}
}
因为 在方法中Test1 c=a;不能够使用,利用的是上述注意方法的第三条
类的方法传值都是引用传值