1 回答

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


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

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