1) Heap是 Stack的一個子集。
2) Stack存取速度僅次于寄存器,Stack里面的數(shù)據(jù)可共享,但是其中數(shù)據(jù)的大小和生存期必須在運行前確定。
3) Heap是運行時可動態(tài)分配的數(shù)據(jù)區(qū),從速度看比Stack慢,Heap里面的數(shù)據(jù)不共享,大小和生存期都可以在運行時再確定。
4) new關(guān)鍵字 是運行時在Heap里面創(chuàng)建對象。每new一次都一定會創(chuàng)建新對象,因為堆數(shù)據(jù)不共享。
Eg: String str1= new String("abc");?? (1)
String str2= "abc";?????????????? (2)
【java編程開發(fā)免費學習資料,需要+我微信領(lǐng)取:tangniu520666,備注“4”】
str1是在Heap里面創(chuàng)建的對象。
str2是指向Stack里面值為“abc”的引用變量,語句(2)的執(zhí)行,首先會創(chuàng)建引用變量str2, 再查找Stack里面有沒有“abc”,有則將 str2指向 “abc”,沒有則在Stack里面創(chuàng)建一個“abc”,再將str2指向“abc”。