Java的String,StringBuffer,StringBuilder都是跟字符串有关系的类,其中StringBuffer和StringBuilder都可以使用toString()方法转换为String(额,貌似万物皆可toString~~~)
String对象是不可改变的。String的每次表面上的改变实际上都是new一个新对象,然后将引用指向新的对象。那么这就很容易看出它的劣势了:如果需要对一个字符串频繁修改,使用String将会极慢~~
StringBuffer,StringBuilder都是可变的字符串。每次修改都是在原对象上进行修改,在频繁修改的时候就比String要快得多~~
StringBuffer和StringBuilder的区别:StringBuilder更快但不保证线程安全,StringBuffer稍微慢一些但保证了线程安全。
写到这里,我突然异想天开:String存在的意义是什么呢?
查了一些资料,得到的结论是——安全。最容易理解的是函数传参的时候,如果函数里有对传进的参数进行修改的操作,如果用StringBuffer,StringBuilder传参的话,原对象会直接被修改了,而使用String就不会有这种问题。比如下面这段代码
public static String addString(String string){
return string += "bbb";
}
public static StringBuilder addString(StringBuilder stringBuilder) {
return stringBuilder.append("bbb");
}
public static void main(String args[]) {
String string = "aaa";
StringBuilder stringBuilder = new StringBuilder("aaa");
System.out.println(addString(string));
System.out.println(string);
System.out.println(addString(stringBuilder));
System.out.println(stringBuilder);
}
String还是略??的呀,毕竟万物皆可toString~~~~