1.String
字符串常量。
String s = "abcd";
s = s+1;
System.out.print(s);
// result : abcd1
這一段創(chuàng)建了兩個對象,分別為abcd的常量和abcdl的常量。
第一個常量對象被jvm進行g(shù)c回收。
2.StringBuffer
字符串變量
線程安全的。
3.StirngBuilder
字符串變量
線程不安全的。
4.速度比較
- StringBuilder>StringBuffer>String
原因:- 變量比常量操作更加快速。
- 因為常量的每一次改變需要新建一個常量。
StringBuilder不用考慮線程安全的問題,所以比StringBuffer快。
5.特例
String s="a"+"b";
StringBuilder s=new StringBuilder("a").append("b");
在這里String是比StringBuilder快的,因為jvm直接將String的操作轉(zhuǎn)換成
String s="ab";
如果是這樣
String s="a";
s=s+"b";
那么String的速度就比StringBuilder慢了。