溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

java拼接字符串有幾種方式

發(fā)布時(shí)間:2020-06-03 13:48:28 來(lái)源:億速云 閱讀:365 作者:Leah 欄目:編程語(yǔ)言

java拼接字符串有幾種方式?針對(duì)這個(gè)問(wèn)題,今天小編總結(jié)這篇有關(guān)字符串拼接的文章,可供感興趣的小伙伴們參考借鑒,希望對(duì)大家有所幫助。

1、 + 方式
String str1="hello";
String str2="world";
String str=str1+str2;

  1. concat方式
    當(dāng)兩個(gè)量都為String類(lèi)型且值不為null時(shí),可以用concat方式
    String a="a";
    String b="b";
    String c= a.concat(b);
    理論上,此時(shí)拼接效率應(yīng)該最高,因?yàn)橐呀?jīng)假定兩個(gè)量都為字符串,做底層優(yōu)化不需要額外判斷或轉(zhuǎn)換,而其他方式無(wú)論如何優(yōu)化,都要先走到這一步。

  2. append方式
    當(dāng)需要拼接至少三個(gè)量的時(shí)候,可以考慮使用StringBuffer#append()以避免臨時(shí)字符串的產(chǎn)生
    StringBuffer buf=new StringBuffer()
    buf.append("a");
    if(someCondition){
    buf.append("b");
    }
    buf.append("c");
    String d=buf.toString();
    當(dāng)a,b,c拼接起來(lái)會(huì)很長(zhǎng)時(shí),可以給在構(gòu)造器中傳入一個(gè)合適的預(yù)估容量以減少因擴(kuò)展緩沖空間而帶來(lái)的性能開(kāi)銷(xiāo)。
    StringBuffer buf=new StringBuffer(a.length()+b.length()+c.length());
    JDK對(duì)外提供的一些涉及可append CharSequence的參數(shù)或返回值類(lèi)型往往是StringBuffer類(lèi)型,畢竟安全第一,而StringBuffer大多數(shù)情況(包括append操作)線程安全。
    若不會(huì)出現(xiàn)多線程同時(shí)對(duì)一實(shí)例并發(fā)進(jìn)行append操作,建議使用非線程安全的StringBuilder以獲得更好性能

  3. 其他
    若需拼接至少三個(gè)量,只用一個(gè)連續(xù)拼接的語(yǔ)句就可完成時(shí),從使代碼簡(jiǎn)潔角度考慮,用plus方式。
    String a="a";
    String b="b";
    String c="c";
    String d=a+b+c;
    此時(shí),第4句經(jīng)JDK編譯后其字節(jié)碼(或)會(huì)自動(dòng)優(yōu)化為等效于下列代碼編譯后的字節(jié)碼。
    String d=new StringBuilder().append(a).append(b).append(c).toString();
    若采用模板+參數(shù)來(lái)替換占位符的方式或需同時(shí)對(duì)要拼接日期/數(shù)字進(jìn)行格式化,可以用String.format()來(lái)實(shí)現(xiàn)。
    看完這篇文章,你們學(xué)會(huì)用java拼接字符串了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI