在Java中,有兩個重要的概念:引用和地址。盡管這兩個概念經常被認為是相同的,但它們實際上有很大的不同。下面我們來詳細探討一下這個問題。
在Java中,用一個變量存儲一個對象,這個變量實際上存儲的是這個對象的地址。這個地址就像一個房間的地址,它告訴我們這個對象在計算機內存中的位置。當我們使用這個變量的時候,我們實際上使用的是這個變量所指向的對象。
Object obj1 = new Object(); // obj1 存儲了一個對象的地址 Object obj2 = obj1; // obj2 將 obj1 中存儲的地址拷貝了一份 obj1 = null; // obj1 不再引用對象
在這個例子中,當我們創建一個新的對象并將它的地址存儲在 obj1 中時,我們可以使用 obj1 來引用這個對象。當我們將 obj1 的地址拷貝到 obj2 中時,現在我們有兩個指向同一個對象的引用。
但是,當我們將 obj1 設置為 null 時,我們實際上是讓 obj1 不再指向任何對象。但是,obj2 仍然指向原來的對象。這是因為我們只改變了一個引用的值,而沒有改變另一個引用的值。
因此,Java中的引用允許我們使用多個變量來引用同一個對象。這種機制使得 Java 程序更加靈活和可靠。