蘇州JAVA中?級(jí)培訓(xùn)
來(lái)源:教育聯(lián)展網(wǎng) 編輯:佚名 發(fā)布時(shí)間:2018-04-08
蘇州JAVA中級(jí)培訓(xùn)
如果明天你要參加一場(chǎng)面試,面試官有個(gè)題目是:說(shuō)說(shuō)String/StringBuffer/StringBuilder它們之間的區(qū)別?你會(huì)怎么回答呢?(腦補(bǔ)一下答案)今天,小編就來(lái)和大家詳細(xì)聊聊字符串String/StringBuffer/StringBuilder,告訴你怎樣完美的回答以上面試官的問(wèn)題,希望對(duì)你有幫助。
考點(diǎn)分析
這個(gè)題目也是考查字符串相關(guān)的。對(duì)于這個(gè)題目,我們**閱讀源碼來(lái)驗(yàn)證我們的答案。
上圖主要顯示String/StringBuilder/StringBuffer的UML結(jié)構(gòu)。
為什么要引入其它兩種字符串處理類?
說(shuō)白了就是提高字符串連接效率。在大部分情況下,字符串的拼接速度為:StringBuilder>StringBuffer>String。
String是不可變的,因此每次對(duì)其操作改變其變量值,其實(shí)是生成一個(gè)新的對(duì)象,然后將變量引用指向新對(duì)象;因此速度慢。
StringBuffer則不同,對(duì)其操作即直接操作對(duì)象指向的引用,無(wú)需產(chǎn)生新對(duì)象,速度很快;它是線程安全的,在維護(hù)多線程的同步等也會(huì)消耗一點(diǎn)性能。
StringBuilder是jdk5之后新增的,其用法與StringBuffer完全一致,但它是線程不安全的,在單線程中**,因?yàn)槠洳恍枰S護(hù)線程的安全,因此是**快的。
是否線程安全?
String 字符串常量(線程安全)。StringBuffer 字符串變量(線程安全)。StringBuilder 字符串變量(非線程安全)。
String 是不可變的,StringBuffer/StringBuilder 是可變的;String/StringBuffer是線程安全的,StringBuilder是非線程安全的。
這里引入來(lái)一個(gè)新的問(wèn)題,了解String.intern()方法嗎?
String.intern()查找常量池中是否有相同Unicode的字符串常量,如果有,則返回其的引用,如果沒(méi)有,則在常量池中增加一個(gè)Unicode等于str的字符串并返回它的引用。因此在用String進(jìn)行字符串拼接時(shí),會(huì)產(chǎn)生很多臨時(shí)變量。建議多使用StringBuffer/StringBuilder。
存放在什么地方?
String是存放在常量池,在編譯期已經(jīng)被確定了。new String()不是字符串常量,它有自己的地址空間,存放在堆空間。而其它兩個(gè)都存放在堆空間。
咨詢聯(lián)系方式:13861302024(楊老師)或者QQ:2589245390 還可以直接在線咨詢
更多JAVA課程推薦:
免費(fèi)體驗(yàn)課開(kāi)班倒計(jì)時(shí)
稍后會(huì)有專業(yè)老師給您回電,請(qǐng)保持電話暢通
最新新聞
- 鄭州中原區(qū)java開(kāi)發(fā)工程師培訓(xùn)學(xué)費(fèi)
- 鄭州中原區(qū)java開(kāi)發(fā)工程師培訓(xùn)去哪家
- 鄭州中原區(qū)java培訓(xùn)
- 看這里,鄭州java開(kāi)發(fā)技能培訓(xùn)
- 鄭州中原區(qū)java工程師培訓(xùn)多久
- 煙臺(tái)Java培訓(xùn)機(jī)構(gòu)十大排行榜單重磅來(lái)襲
- 煙臺(tái)靠譜的Java培訓(xùn)機(jī)構(gòu)名單榜首一覽
- 煙臺(tái)十大軟件開(kāi)發(fā)培訓(xùn)機(jī)構(gòu)排行榜
- 熱推!珠海十大華為鴻蒙系統(tǒng)開(kāi)發(fā)培訓(xùn)班排名哪家好
- 熱推!珠海前三Java編程語(yǔ)言培訓(xùn)學(xué)校需要多少錢