-
String、StringBuffer和StringBuilder都可以当做字符串
-
String的内容不可修改,StringBuffer和StringBuilder的内容可以修改。
String的不可变:体现在拼接和重新赋值上,每次拼接都会产生新的对象。
public class Test{
public static void main(String[] args) {
String s = "abcdef";
s = "defgh";
s = s+"Hello";
System.out.println(s);
}
}
StringBuffer的使用:每次append返回的都是原来的对象的引用。并不会产生新的对象。
public class Test{
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
sb.append("Hello").append("World");
System.out.println(sb);
}
}
StringBuilder的使用:
public class Test{
public static void main(String[] args) {
StringBuilder stringBuilder = new StringBuilder("Hello");
stringBuilder.append("World");
System.out.println(stringBuilder);
}
}
StringBuffer和StringBuilder的拼接使用方法为append()。
String的拼接,底层被优化为了StringBuilder。
- StringBuffer和StringBuilder
- StringBuffer采用同步处理,属于线程安全操作;
- StringBuilder采用异步处理,属于线程不安全操作。
注意:String和StringBuffer类不能直接转换。如果要想转换,可以采用如下原则:
- String变为StringBuffer:利用StringBuffer的构造方法或append()方法
- StringBuffer变为String:调用toString方法。