字串常量池

towboat發表於2024-10-17

執行 new String("hello") 可能建立 一個或兩個物件,具體情況取決於 "hello" 是否已經存在於字串常量池中。

情況分析

  1. 如果常量池中已存在 "hello" 字串

    • new String("hello") 會直接在堆中建立一個新的 String 物件,並且這個物件的值指向常量池中的 "hello"
    • 這種情況下,new String("hello") 只會建立 1 個物件(即堆中的 String 物件)。
  2. 如果常量池中不存在 "hello" 字串

    • 首先會在字串常量池中建立 "hello" 字串常量。
    • 然後 new String("hello") 在堆中建立一個新的 String 物件。
    • 這種情況下,new String("hello") 會建立 2 個物件(常量池中的 "hello" 和堆中的 String 物件)

相關文章