1 回答

Zhuliuer
TA貢獻(xiàn)10條經(jīng)驗(yàn) 獲得超15個贊
類似于你題目中的形式定義一個字符串,java語言中有一個常量池,如果在你的代碼的其它地方已經(jīng)定義過這么這個'123'的變量,在定義string s='123'的時候,直接把s指向常量池中的字符串123,就不會新生成一個字符串123,但假如沒有的話,就會新生成一個字符串123,指向s,并放入常量池!
我覺得你不需要去關(guān)注有幾個對象問題,你可以了解一下字符串常量池的概念!看看是什么原理。


慕沐9307871
TA貢獻(xiàn)27條經(jīng)驗(yàn) 獲得超9個贊
一個對象(常量池里的),需要搞清楚的是你這句代碼和
String?s?=?new?String("123");
有區(qū)別的,我這句兩個對象(一個堆中的對象,一個常量池里的對象)。
這類問題需要理清常量池的規(guī)律,其他迎刃而解。

楠寶寶_
TA貢獻(xiàn)46條經(jīng)驗(yàn) 獲得超18個贊
我覺得其實(shí)現(xiàn)在已經(jīng)沒必要去糾結(jié)這種new對象的內(nèi)存問題了,就比如我問你
String temp = "a" +"b"+"c"+"d";這句話有多少對象產(chǎn)生?你不管說幾個,3,4個都不一定對的,因?yàn)橐淳幾g器的,一些編譯器是會自動變成String temp = "abcd";
添加回答
舉報
0/150
提交
取消