String 字符串常量 不可變 使用字符串拼接時(shí)是不同的2個(gè)空間。
StringBuffer 字符串變量 可變 線程安全,字符串拼接直接在字符串后追加。
StringBuilder 字符串變量 可變 非線程安全,字符串拼接直接在字符串后追加。
1、 StringBuilder執(zhí)行效率高于StringBuffer高于String。
2、String是一個(gè)常量,是不可變的,所以對(duì)于每一次+=賦值都會(huì)創(chuàng)建一個(gè)新的對(duì)象, StringBuffer和StringBuilder都是可變的,當(dāng)進(jìn)行字符串拼接時(shí)采用append方法,在原來(lái)的基礎(chǔ) 上進(jìn)行追加,所以性能比String要高,又因?yàn)镾tringBuffer是線程安全的而StringBuilder是線程非安全的,所以StringBuilder的效率高于StringBuffer。
3、對(duì)于大數(shù)據(jù)量的字符串的拼接,采用StringBuffer,StringBuilder。
4、另一種說(shuō)法,JDK1.6做了優(yōu)化,通過(guò)String聲明的字符串在進(jìn)行用“+”進(jìn)行拼接時(shí),底層調(diào)用的是StringBuffer,所以性能上基本和后兩者沒(méi)有什么區(qū)別。