關於引用變數進行引用傳遞時傳遞變數為空和不為空的區別
阿新 • • 發佈:2018-11-17
/** * */ /** * @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(); } }