Java中有兩種方式來存儲變量和對象:棧和堆。
棧是一種線性數據結構,它是一種先進后出的數據結構。存儲在棧中的數據叫做原始類型,例如 int、char、boolean 等。它們在棧中被直接存儲和訪問。當我們在方法內定義一個變量時,它會被存儲在棧中。當方法結束時,變量從棧中彈出,內存自動被回收。棧擁有固定的內存大小,所以當存儲太多數據時,可能會導致棧溢出。
public static void main(String[] args) { int num1 = 10; int num2 = 20; int sum = num1 + num2; }
堆是另一種存儲方式,它是存儲對象的特殊區域。當我們創建一個對象時,它的引用存儲在棧中,而對象本身存儲在堆中。堆是動態分配內存的,在內存中沒有固定的大小。堆中存儲的是Java中所有類的實例,不論是自己寫的還是Java提供的。
public static void main(String[] args) { String name = "John"; Person person = new Person(name); }
從本質上講,棧和堆都是計算機內存中的一部分,并將內存劃分為多個部分以便于管理。它們在Java中起到非常重要的作用,對于程序員來說理解它們之間的區別和使用方式非常重要。