Java方法的参数传递

利用方法参数做到和做不到的几种情况:

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;不能够使用,利用的是上述注意方法的第三条

类的方法传值都是引用传值

 

阅读更多
个人分类: JAVA
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭