String str = new String(「abc」)創建了幾個對象

記得當初背面試題的時候,一般是直接回答 -- 創建了兩個對象。也不太清楚所以然。 實際上是需要分情況討論。 情況如下: 一、JVM爲了提高性能和減少內存開銷,會對實例化字符串常量進行一些優化【即相同字符串無需重新生成,支持數據共享】。所以在當前問題中,系統會先檢測常量池中是否含有「abc」這個字符串對象,如果有,不創建;如果沒有,則創建一個「abc」的字符串對象; 二、new關鍵字表示在堆中開闢了
相關文章
相關標籤/搜索