StringJoiner

1. StringJoiner:StringJoiner跟StringBuilder一樣,也可以看成是容器,創(chuàng)建后其中的內(nèi)容是可變的。

作用:提高字符串的操作效率,而且代碼簡潔



2. StringJoiner的構(gòu)造方法

public StringJoiner(間隔符號):創(chuàng)建一個StringJoiner的對象,指定拼接的間隔符號

public StringJoiner(間隔符號,開始符號,結(jié)束符號):創(chuàng)建一個StringJoiner對象,指定拼接的間隔符號,開始符號,結(jié)束符號



3. StringJoiner的成員方法

public StringJoiner add(添加的內(nèi)容):添加數(shù)據(jù),并返回對象本身

注意:add()方法只能添加字符串類型

public int length():返回長度(所有字符出現(xiàn)的個數(shù))

public String toString():返回一個字符串(該字符串就是拼接之后的結(jié)果)



4. (1):字符串儲存的內(nèi)存原理

· ·直接賦值會復(fù)用字符串常量池中的

· ·new出來的不會復(fù)用,會開辟一個新的空間

(2):字符串拼接原理

· ·如果拼接過程中沒有變量的參與,只有字符串的情況下,代碼會在編譯的時候直接生成拼接后的結(jié)果

例如:s = “a” + “b”

編譯后即為s = “ab”,然后再打印s

· ·如果拼接過程中有變量的參與

JDK8以前:系統(tǒng)會先創(chuàng)建一個StringBuilder對象,使用append方法將要拼接的對象添加到StringBuilder中,然后利用toString方法,將其轉(zhuǎn)換成String對象,這樣就會創(chuàng)建兩個新的對象

JDK8以后:系統(tǒng)會先預(yù)估拼接后的字符串有多長,然后再新建一個數(shù)組,將各個所需拼接的字符串放入其中,隨后完成拼接,這樣會新建一個字符串

· ·無論是JDK8以前還是以后,使用+進(jìn)行拼接,有變量參與的情況下,都會產(chǎn)生新的對象,會浪費空間和時間,所以在拼接字符串的時候最好不要使用+號直接進(jìn)行拼接,可以創(chuàng)建StringBuilder對象或者StringJoiner對象來拼接

5. StringBuilder提高效率的原理:

所有要拼接的內(nèi)容都是直接放到StringBuilder中,不會創(chuàng)建很多無用的空間,節(jié)約內(nèi)存

6. StringBuilder的原理

· ·默認(rèn)創(chuàng)建一個容量為16的字節(jié)數(shù)組

· ·添加的內(nèi)容小于16,直接存入字符對應(yīng)的ASCII碼值

· ·若一次存入的內(nèi)容超出16,就會擴(kuò)容,擴(kuò)容容量為老容量*2+2即34

· ·若一次存入的內(nèi)容超出34,則以實際長度為準(zhǔn)

長度是實際裝了的,容量是最大能裝多少

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容