值傳遞和引用傳遞

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章