`
tian602564031
  • 浏览: 22831 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

值传递和引用传递

 
阅读更多
public class Test2{    
public static void print(Object a,Object b){
	System.out.println(a.toString()+b.toString());
    }
    public static void swap(String a,String b){
    	String temp=a;
    	a=b;
    	b=temp;
    	System.out.println(a);
    	System.out.println(b);
    }
    public static void swap(Object[] object){
    	Object temp=object[0];
    	object[0]=object[1];
    	object[1]=temp;
    	System.out.println(object[0]);
    	System.out.println(object[1]);
    }
public static void main(String[] args) {
    	String a = "A";
    	String b = "B";
    	Integer c = Integer.valueOf(0); 
    	/**
    	 * parseInt()
    	 * valueOf()
    	 */
    	swap(a,b);
    	print(a,b);
   	 	Object[] objects=new Object[]{b,c};
    	swap(objects);
    	print(objects[0],objects[1]);
    } 
}
  •  值传递 : 传递的是值得拷贝(副本), 传递之后就互不干扰了.(对于基本数据类型)
  • public class Test4 {
    
    	/**
    	 * @param args
    	 * 值传递和引用传递
    	 */
    	private static void testValues(int i){
    		i = 5;
    		System.out.println("testValues方法中的i的值为:"+i);
    	}
    	
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		int i = 10;
    		Test4.testValues(i);
    		System.out.println("main方法中i的值为:"+i);
    		
    	}
    }
    
    结果:test方法中的i的值为:5
    main方法中i的值为:10 
  • 引用传递 : 传递是变量所对应的内存空间的地址
  • public class Test5 { 
      private void test1(A a){ 
    	 a.age = 20;
    	 System.out.println("test1方法中的age="+a.age); 
    	  }  
      public static void main(String[] args) { 
    	  Test5 t = new Test5(); 
    	  A a = new A(); 
    	  a.age = 10; 
    	  t.test1(a); 
    	  System.out.println("main方法中的age="+a.age);} }
    
    class A{
    	public int age = 0; 
    	}
    结果: test1方法中的age=20
    main方法中的age=20

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics