String s = new String(" a ") 到底產生幾個物件?

宜春發表於2020-04-14

老生常談的一個梗,到2020了還在爭論,你們一天天的,哎哎哎,我不是針對你一個,我是說在座的各位都是人才!
在這裡插入圖片描述
上圖紅色的這3個箭頭,對於通過new產生一個字串(”宜春”)時,會先去常量池中查詢是否已經有了”宜春”物件,如果沒有則在常量池中建立一個此字串物件,然後堆中再建立一個常量池中此”宜春”物件的拷貝物件。

也就是說準確答案是產生了一個或兩個物件,如果常量池中原來沒有 ”宜春” ,就是兩個。反之就是一個。

是的!如果面試官問到,回答一個或兩個即可,但是…畢竟…畢竟

畢竟我和各位都是人才,java知識底蘊不能如此短淺,這題還沒謝幕我們還能對面試官多嗶嗶幾句:字串常量池在不同版本的jvm中可能位置不同,那麼這又是一個老梗了,到這裡,歡迎評論區暢談,估計面試官會眼前一亮小夥有點東西!

最後,若有不足或者不正之處,歡迎指正批評,感激不盡!如果有疑問歡迎留言,絕對第一時間回覆!

歡迎各位關注我的公眾號,裡面有一些java學習資料和一大波java電子書籍,比如說周志明老師的深入java虛擬機器、java程式設計思想、核心技術卷、大話設計模式、java併發程式設計實戰…都是java的聖經,不說了快上Tomcat車,咋們走!最主要的是一起探討技術,嚮往技術,追求技術,說好了來了就是盆友喔…

在這裡插入圖片描述

相關文章