1 回答

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


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

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