String
用final修飾,實際上是不可更改的。我們平常用的“+”來連接,實際執行過程中是將原字符串連接之后生成新的對象重新賦值給這個名字的字符串。
@Testpublic void myStrTest(){String s = "str_s";System.out.println(s);String ss = s.toUpperCase();System.out.println(s);System.out.println(ss);}str_s
STR_S
str_s復制代碼
當使用 string + string 操作時。相當于 多次創建string對象,影響效率 java編譯器會根據 string + 操作的具體情況,將string 類型的對象 轉化成 StringBuilder 對象進行相加。StringBuilder 的 append 方法不會創建String 的實例對象
當簡單的string相加時候 編譯器會能夠進行有效的轉化,當我們使用循環 來對Stirng 的對象進行累加時候,編譯器會創建多個StringBuilder來進相加,會影響性能,
StringBuilder
動態創建的,可以在同一字符串上進行動態修改。
常用的append 方法,當字符串循環累計時候,推薦使用StringBuilder的append方法,在通過同String ()方法返回String類型
StringBuilder stringBuilder = new StringBuilder("string");System.out.println(stringBuilder);stringBuilder.insert(1,"ss");System.out.println(stringBuilder);stringBuilder.replace(1,3,"bb");System.out.println(stringBuilder);stringBuilder.substring(3);System.out.println(stringBuilder);stringBuilder.append("hahhah");String str = stringBuilder.toString();System.out.println(str);string
ssstring
sbbtring
sbbtring
sbbtringhahhah