蘇州培訓(xùn)網(wǎng) > 蘇州JAVA培訓(xùn)機(jī)構(gòu) > 三網(wǎng)IT
首頁 培訓(xùn)網(wǎng) 最新資訊 熱門問答

三網(wǎng)IT

免費試聽 13013833891

您當(dāng)前的位置: 資訊首頁 > JAVA培訓(xùn)資訊 > 蘇州JAVA中?級培訓(xùn)

蘇州JAVA中?級培訓(xùn)

來源:教育聯(lián)展網(wǎng)    編輯:佚名    發(fā)布時間:2018-04-08

蘇州JAVA中級培訓(xùn)

如果明天你要參加一場面試,面試官有個題目是:說說String/StringBuffer/StringBuilder它們之間的區(qū)別?你會怎么回答呢?(腦補(bǔ)一下答案)今天,小編就來和大家詳細(xì)聊聊字符串String/StringBuffer/StringBuilder,告訴你怎樣完美的回答以上面試官的問題,希望對你有幫助。

考點分析

這個題目也是考查字符串相關(guān)的。對于這個題目,我們**閱讀源碼來驗證我們的答案。

蘇州JAVA中級培訓(xùn)

上圖主要顯示String/StringBuilder/StringBuffer的UML結(jié)構(gòu)。


為什么要引入其它兩種字符串處理類?

說白了就是提高字符串連接效率。在大部分情況下,字符串的拼接速度為:StringBuilder>StringBuffer>String。

String是不可變的,因此每次對其操作改變其變量值,其實是生成一個新的對象,然后將變量引用指向新對象;因此速度慢。

StringBuffer則不同,對其操作即直接操作對象指向的引用,無需產(chǎn)生新對象,速度很快;它是線程安全的,在維護(hù)多線程的同步等也會消耗一點性能。

StringBuilder是jdk5之后新增的,其用法與StringBuffer完全一致,但它是線程不安全的,在單線程中**,因為其不需要維護(hù)線程的安全,因此是**快的。


是否線程安全?

String 字符串常量(線程安全)。StringBuffer 字符串變量(線程安全)。StringBuilder 字符串變量(非線程安全)。

String 是不可變的,StringBuffer/StringBuilder 是可變的;String/StringBuffer是線程安全的,StringBuilder是非線程安全的。


這里引入來一個新的問題,了解String.intern()方法嗎?

String.intern()查找常量池中是否有相同Unicode的字符串常量,如果有,則返回其的引用,如果沒有,則在常量池中增加一個Unicode等于str的字符串并返回它的引用。因此在用String進(jìn)行字符串拼接時,會產(chǎn)生很多臨時變量。建議多使用StringBuffer/StringBuilder。


存放在什么地方?

String是存放在常量池,在編譯期已經(jīng)被確定了。new String()不是字符串常量,它有自己的地址空間,存放在堆空間。而其它兩個都存放在堆空間。



咨詢聯(lián)系方式:13861302024(楊老師)或者QQ:2589245390 還可以直接在線咨詢

更多JAVA課程推薦:

蘇州JAVA培訓(xùn)網(wǎng)

蘇州JAVA軟件培訓(xùn)

蘇州三網(wǎng)IT教育培訓(xùn)

蘇州其然軟件開發(fā)培訓(xùn)

上一篇:蘇州JAVA?初級培訓(xùn) 下一篇:蘇州JAVA高級培訓(xùn)
蘇州JAVA

免費體驗課開班倒計時

11: 41: 09

稍后會有專業(yè)老師給您回電,請保持電話暢通

咨詢電話:13013833891
推薦機(jī)構(gòu) 全國分站 更多課程

今日已有25人申請,本月限額500

申請試聽名額

已有10254人申請免費試聽

01電話咨詢 | 13013833891

QQ:1413838287
加盟合作:0755-83654572