String s = new String('a ') 到底產(chǎn)生幾個對象
老生常談的一個梗,到2020了還在爭論,你們一天天的,哎哎哎,我不是針對你一個,我是說在座的各位都是人才!

上圖紅色的這3個箭頭,對于通過new產(chǎn)生一個字符串(”宜春”)時,會先去常量池中查找是否已經(jīng)有了”宜春”對象,如果沒有則在常量池中創(chuàng)建一個此字符串對象,然后堆中再創(chuàng)建一個常量池中此”宜春”對象的拷貝對象。
也就是說準確答案是產(chǎn)生了一個或兩個對象,如果常量池中原來沒有 ”宜春” ,就是兩個。反之就是一個。
是的!如果面試官問到,回答一個或兩個即可,但是…畢竟…畢竟
畢竟我和各位都是人才,java知識底蘊不能如此短淺,這題還沒謝幕我們還能對面試官多嗶嗶幾句:字符串常量池在不同版本的jvm中可能位置不同
那么String s=new String("a"+"b");創(chuàng)建了幾次對象?
當jvm 看到 "a","b"時候 各創(chuàng)建了一次對象,"a"+"b"又創(chuàng)建了一個新的串,新的對象 ,new 創(chuàng)建了一個對象在堆,所以一共創(chuàng)建四次對象.
String a="sss";
這是之前我的理解 不知道對不對 大家看看評論第二條,是另一種理解。如果我們是為了應(yīng)付面試可以兩者結(jié)合來說,如果自己鉆研 還是動手多操作看看 ~~在不同的jdk版本可能有不同的結(jié)果
例子:a="bbb";
String 不是不可變對象嗎 ?是怎么賦值的呢?
String 是不可變對象,當jvm看到"sss"時把引用賦給a,當 jvm看到"bbb"的時候,又創(chuàng)建了新的對象 ,把新的引用返回給a,而原來的"sss"還是不變的.
到此這篇關(guān)于String s = new String(" a ") 到底產(chǎn)生幾個對象的文章就介紹到這了,更多相關(guān)String s = new String(" a ")內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java命令設(shè)計模式優(yōu)雅解耦命令和執(zhí)行提高代碼可維護性
本文介紹了Java命令設(shè)計模式,它將命令請求封裝成對象,以達到解耦命令請求和執(zhí)行者的目的,從而提高代碼可維護性。本文詳細闡述了該模式的設(shè)計原則、實現(xiàn)方法和優(yōu)缺點,并提供了實際應(yīng)用場景和代碼示例,幫助讀者深入理解和應(yīng)用該模式2023-04-04
springboot接入cachecloud redis示例實踐
這篇文章主要介紹了springboot接入cachecloud redis示例實踐,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-10-10
Java實現(xiàn)人臉識別登錄、注冊等功能(最新完整版)
這段時間由于學校實行靜態(tài)化管理,寢室門和校門都是用了人臉識別的裝置,本系列項目從設(shè)計到實現(xiàn)源碼全部開源免費學習使用,對Java實現(xiàn)人臉識別登錄、注冊功能感興趣的朋友一起看看吧2022-05-05
JavaWeb基礎(chǔ)教程之Java基礎(chǔ)加強版
這篇文章主要介紹了JavaWeb基礎(chǔ)教程之Java基礎(chǔ)加強版的相關(guān)資料,需要的朋友可以參考下2016-07-07
詳解SpringBoot?Start組件開發(fā)之記錄接口日志信息
這篇文章主要為大家介紹了SpringBoot-Start組件開發(fā)之記錄接口日志信息詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-04-04
Java8 stream 中利用 groupingBy 進行多字段分組求和案例
這篇文章主要介紹了Java8 stream 中利用 groupingBy 進行多字段分組求和案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08

