Java中的對象是指內(nèi)存中的實例,可以通過創(chuàng)建類實例的方式來創(chuàng)建。在Java中,對象的存儲位置有兩個:堆和棧。
棧是一種線性數(shù)據(jù)結(jié)構(gòu),它按照Last-In-First-Out(LIFO)的原則存儲數(shù)據(jù)。在Java中,棧主要用于存儲基本類型的變量和對象的引用。堆是一種樹形數(shù)據(jù)結(jié)構(gòu),它用于存儲Java中的所有對象和數(shù)組。
對象引用存放在棧中,指向?qū)ο蟊旧泶娣旁诙阎小.?dāng)創(chuàng)建新的對象時,Java會在堆中分配一段內(nèi)存來存儲對象的實例,然后返回一個引用指向該內(nèi)存塊。這個引用就是我們通常所說的對象的存儲位置。
//創(chuàng)建一個對象 class Person{ String name; int age; } public static void main(String[] args) { Person person = new Person(); //在堆中分配內(nèi)存,返回引用指向該內(nèi)存塊,將引用存放在棧中 person.name = "Tom"; person.age = 20; }
在上述代碼中,我們創(chuàng)建了一個Person對象,并將其引用存放在了棧中。person引用指向的對象實例存儲在堆中。通過person引用,我們可以訪問對象實例中的屬性和方法。