尼牙孜是正確的,但也值得注意的是,Java編譯器可以將特殊+操作符轉(zhuǎn)換為更有效的操作。Java有一個(gè)StringBuilder類(lèi),它表示一個(gè)非線(xiàn)程安全的可變字符串.當(dāng)執(zhí)行一串字符串連接時(shí),Java編譯器會(huì)默默地進(jìn)行轉(zhuǎn)換
String a = b + c + d;
進(jìn)
String a = new StringBuilder(b).append(c).append(d).toString();
對(duì)于大型字符串來(lái)說(shuō),這樣做的效率要高得多。據(jù)我所知,當(dāng)您使用conat方法時(shí)不會(huì)發(fā)生這種情況。
但是,當(dāng)將空字符串連接到現(xiàn)有字符串時(shí),CONAT方法更有效。在這種情況下,JVM不需要?jiǎng)?chuàng)建新的字符串對(duì)象,只需返回現(xiàn)有的字符串對(duì)象即可??匆?jiàn)CONAT文件來(lái)證實(shí)這一點(diǎn)。
因此,如果您非常關(guān)心效率,那么在連接可能為空的字符串時(shí),應(yīng)該使用conat方法,并使用+否則。但是,性能差異應(yīng)該可以忽略不計(jì),您可能永遠(yuǎn)不應(yīng)該擔(dān)心這一點(diǎn)。