String、StringBuffer和StringBuilder
String
java中字符串String有两种创建方式。一种储存在公共池中,一种储存在堆上。
String str="储存在公共池中的创建方式";
String str2=new String("储存在堆上的创建方式");
String是静态的,一旦创建就不可变。当改变str的值时,jvm会在内存中创建一个新的String存储str+str2的值,并将其赋值给str。因此变量str只是指向了一个新的对象,效率极低
String str="储存在公共池中的创建方式";
String str2=new String("储存在堆上的创建方式");
String str=str+str2;
StringBuffer和StringBuilder
当对字符串进行频繁修改的时候,需要使用 StringBuffer 和 StringBuilder 类。和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
StringBuffer | StringBuilder | |
---|---|---|
多线程 | 线程安全 | 线程不安全 |
运行速度 | 慢(但还是比String快) | 快 |
清空StringBuffer和StringBuilder
值得一提的是StringBuffer和StringBuilder并没有clear()
方法来清空元素。因此要采用其他方式来清空所有元素。
- 使用delete方法清空
StringBuffer str=new StringBuffer("test");
str.delete(0,str.length());
- 使用setlengeh
StringBuffer str=new StringBuffer("test");
str.setLength(0);