1. 程式人生 > >淺談空指標和棧,堆記憶體

淺談空指標和棧,堆記憶體

/**
   * 堆記憶體(heap):儲存每一個物件的屬性,使用一個物件時,一定需要一個對應堆記憶體的指向,而堆記憶體空間的開闢需要用關鍵字     *new,每一個物件在剛剛例項化後,裡面的屬性都是其對應資料型別的預設值,一塊堆記憶體可以被多個棧記憶體指向


     * 棧記憶體(stack):儲存的是一塊堆記憶體的空間地址值,一個棧記憶體只能儲存一個堆記憶體的空間地址值。
     */

String str = "";//此時並未new物件,但會直接入池儲存,並且同樣會開闢一塊記憶體空間
str.equals("");//true
String str2 = new String();//使用一個物件時一定要確保對應的堆記憶體的指向,而堆記憶體需要關鍵字new,每個物件被例項化後都有其預設的資料預設值,一塊堆記憶體可以被多個棧記憶體所指向,也就數關係的引用
str2.equals("")//true  String預設是null
new String().equals("")//true 匿名物件,在堆記憶體開闢一個新的記憶體空間,因為它沒有把空間地址值給任何變數,所以只會被呼叫一次,當做實參傳遞,而後等待被GC回收