1. 程式人生 > >關於引用變數進行引用傳遞時傳遞變數為空和不為空的區別

關於引用變數進行引用傳遞時傳遞變數為空和不為空的區別

/**
 * 
 */
/**   
 * @author jueying:   
 * @version 建立時間:2018-10-27 下午02:02:27   
 * 類說明   
 */
/**
 * @author jueying
 *
 */

class A {
	
	public int a;

	/**
	 * @return the a
	 */
	public int getA() {
		return a;
	}

	/**
	 * @param a the a to set
	 */
	public void setA(int a) {
		this.a = a;
	}
	
	

}


public class Test9 {
	
	A a;
	
	A a1;
	
	/*
	 * 
	*/
	public void fun(){
	    createA(a);	
	    System.out.println(a.getA());//java.lang.NullPointerException
	}

	public void createA(A b){//同理a指向的物件為空,那麼b指向的物件也為空
		b=new A();//重新給b賦值指向新的物件
		b.setA(1);//b給新物件設定屬性,但是引用變數a指向的物件任然為空,所以輸出報空指標異常
	}
	
	
	
	
	public void fun1(){
		a1=new A();
		create(a1);	
		System.out.println(a1.getA());//輸出1
	}
	
	//這裡引用變數a1賦值給了引用變數b,b指向了a1引用的物件地址,通過b去改變物件的屬性,那麼a1指向的物件屬性也發生改變
	public void create(A b){
		b.setA(1);
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
          
           new Test9().fun1();
           
           new Test9().fun();
           
          
	}

}