在Java程序設(shè)計(jì)中,引用對象和真實(shí)對象是兩個非常不同的概念。雖然它們看起來很相似,但是它們的實(shí)質(zhì)是不一樣的。
// 定義一個Person類 public class Person { String name; int age; } // 創(chuàng)建一個Person對象 Person person = new Person(); person.name = "張三"; person.age = 18;
引用對象
在Java中,引用對象是指變量所指向的對象。實(shí)際上,Java中所有的對象都是通過引用進(jìn)行訪問的。例如,我們可以通過創(chuàng)建一個對象并將其賦值給一個變量來引用這個對象。當(dāng)我們使用該變量時,實(shí)際上是訪問了該對象的屬性、方法等。
Person person1 = person; // 將person對象的引用賦值給person1 person1.age = 20; System.out.println(person.age); // 輸出20,因?yàn)閜erson和person1引用的是同一個對象
真實(shí)對象
真實(shí)對象是指實(shí)際占用內(nèi)存空間的對象。當(dāng)我們通過創(chuàng)建一個對象并將其賦值給一個變量來引用該對象時,Java虛擬機(jī)會在堆內(nèi)存中為該對象分配一段內(nèi)存空間。實(shí)際上,變量所引用的是該對象在內(nèi)存中的地址。
Person person2 = new Person(); // 創(chuàng)建一個新的Person對象 person2.age = 22; System.out.println(person.age); // 輸出20,因?yàn)閜erson和person1引用的是同一個對象 System.out.println(person2.age); // 輸出22,因?yàn)閜erson2引用的是一個新創(chuàng)建的對象
綜上所述,引用對象和真實(shí)對象的區(qū)別在于,引用對象是指變量所指向的對象,而真實(shí)對象是指實(shí)際占用內(nèi)存空間的對象。