引用類型變量在聲明后必須引用對象才能使用。
一個引用變量只能唯一指向一個對象,但同一個對象可被多個引用類型變量引用。
如:MyDate today; //將變量跟配給一個保存引用的空間(棧)
today = new MyDate(); //給today變量開辟數據空間(堆),然后再執行賦值操作
//引用變量賦值
MyDate a, b; //在內存開辟兩個引用空間
a = new MyDate(); //開辟MyDate對象的數據空間,並把改空間的首地址賦值給a
b = a; //將a存儲空間的地址寫到b的存儲空間中
public class MyDate { public int year = 2017; public int month = 11; public int day = 17; public void show() { System.out.println(year+"/"+month+"/"+day); } }
public class Test { //一個引用變量只能唯一指向一個對象,而一個對象可以有過個引用變量來引用 public static void main(String[] args) { MyDate a;//聲明一個引用變量,引用變量在占中開辟內存空間 a = new MyDate();//在堆中創建一個對象,並把對象的地址賦值給引用變量 MyDate b = new MyDate(); MyDate c = new MyDate(); MyDate d = c;//將c引用變量中保存的地址賦值給b變量 a.show(); //2017/11/17 b.show(); //2017/11/17 c.show(); //2017/11/17 d.show(); //2017/11/17 //a、b互不影響 a.month = 12; a.show(); //2017/12/17 b.show(); //2017/11/17 b.day = 20; a.show(); //2017/12/17 b.show(); //2017/11/20 //c、d指向同一個地址,所有相互影響 c.year = 1949; c.show(); //1949/11/17 d.show(); //1949/11/17 d.month = 10; c.show(); //1949/10/17 d.show(); //1949/10/17 } }