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

上圖紅色的這3個(gè)箭頭,對(duì)于通過(guò)new產(chǎn)生一個(gè)字符串(”宜春”)時(shí),會(huì)先去常量池中查找是否已經(jīng)有了”宜春”對(duì)象,如果沒有則在常量池中創(chuàng)建一個(gè)此字符串對(duì)象,然后堆中再創(chuàng)建一個(gè)常量池中此”宜春”對(duì)象的拷貝對(duì)象。
也就是說(shuō)準(zhǔn)確答案是產(chǎn)生了一個(gè)或兩個(gè)對(duì)象,如果常量池中原來(lái)沒有 ”宜春” ,就是兩個(gè)。反之就是一個(gè)。
是的!如果面試官問(wèn)到,回答一個(gè)或兩個(gè)即可,但是…畢竟…畢竟
畢竟我和各位都是人才,java知識(shí)底蘊(yùn)不能如此短淺,這題還沒謝幕我們還能對(duì)面試官多嗶嗶幾句:字符串常量池在不同版本的jvm中可能位置不同
那么String s=new String("a"+"b");創(chuàng)建了幾次對(duì)象?
當(dāng)jvm 看到 "a","b"時(shí)候 各創(chuàng)建了一次對(duì)象,"a"+"b"又創(chuàng)建了一個(gè)新的串,新的對(duì)象 ,new 創(chuàng)建了一個(gè)對(duì)象在堆,所以一共創(chuàng)建四次對(duì)象.
String a="sss";
這是之前我的理解 不知道對(duì)不對(duì) 大家看看評(píng)論第二條,是另一種理解。如果我們是為了應(yīng)付面試可以兩者結(jié)合來(lái)說(shuō),如果自己鉆研 還是動(dòng)手多操作看看 ~~在不同的jdk版本可能有不同的結(jié)果
例子:a="bbb";
String 不是不可變對(duì)象嗎 ?是怎么賦值的呢?
String 是不可變對(duì)象,當(dāng)jvm看到"sss"時(shí)把引用賦給a,當(dāng) jvm看到"bbb"的時(shí)候,又創(chuàng)建了新的對(duì)象 ,把新的引用返回給a,而原來(lái)的"sss"還是不變的.
到此這篇關(guān)于String s = new String(" a ") 到底產(chǎn)生幾個(gè)對(duì)象的文章就介紹到這了,更多相關(guān)String s = new String(" a ")內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
帶你重新認(rèn)識(shí)MyBatis的foreach
這篇文章主要介紹了重新認(rèn)識(shí)MyBatis的foreach,本文提出了一種簡(jiǎn)化<foreach>寫法的設(shè)想,更重要的是通過(guò)解決空集時(shí)生成的SQL語(yǔ)法問(wèn)題,更深刻地理解MyBatis的foreach的生成機(jī)制,需要的朋友可以參考下2022-11-11
Spring Cache優(yōu)化數(shù)據(jù)庫(kù)訪問(wèn)的項(xiàng)目實(shí)踐
本文主要介紹了Spring Cache優(yōu)化數(shù)據(jù)庫(kù)訪問(wèn)的項(xiàng)目實(shí)踐,將創(chuàng)建一個(gè)簡(jiǎn)單的圖書管理應(yīng)用作為示例,并演示如何通過(guò)緩存減少對(duì)數(shù)據(jù)庫(kù)的頻繁查詢,感興趣的可以了解一下2024-01-01
SpringBoot @ControllerAdvice 攔截異常并統(tǒng)一處理
這篇文章主要介紹了SpringBoot @ControllerAdvice 攔截異常并統(tǒng)一處理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
深入理解Java8新特性之Stream API的終止操作步驟
Stream是Java8的一大亮點(diǎn),是對(duì)容器對(duì)象功能的增強(qiáng),它專注于對(duì)容器對(duì)象進(jìn)行各種非常便利、高效的 聚合操作(aggregate operation)或者大批量數(shù)據(jù)操作。Stream API借助于同樣新出現(xiàn)的Lambda表達(dá)式,極大的提高編程效率和程序可讀性,感興趣的朋友快來(lái)看看吧2021-11-11
如何解決線程太多導(dǎo)致java socket連接池出現(xiàn)的問(wèn)題
這篇文章主要介紹了如何解決線程太多導(dǎo)致socket連接池出現(xiàn)的問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
springboot?整合?clickhouse的實(shí)現(xiàn)示例
本文主要介紹了springboot?整合?clickhouse的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02

