Java 多個引用類型變量引用同一個對象


引用類型變量在聲明后必須引用對象才能使用。

一個引用變量只能唯一指向一個對象,但同一個對象可被多個引用類型變量引用。

如: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
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM