1.String
字符串常量。
String s = "abcd";
s = s+1;
System.out.print(s);
// result : abcd1
这一段创建了两个对象,分别为abcd的常量和abcdl的常量。
第一个常量对象被jvm进行gc回收。
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的操作转换成
String s="ab";
如果是这样
String s="a";
s=s+"b";
那么String的速度就比StringBuilder慢了。
网友评论