StringBuffer和StringBuilder
二者的区别
- StringBuffer 和 StringBuilder 和 String 是不相同的东西。
- 从内部的方法上来说 StringBuffer 和 StringBuilder 是差不多的。
StringBuilder
第一种:直接赋值
public static void main(String[] args) {
StringBuilder s = new StringBuilder("abcdef");
System.out.println(s);
}
运行结果如下:
这里的直接赋值和 String 类似。
第二种:append 拼接
public static void main(String[] args) {
StringBuilder s1 = new StringBuilder();
s1.append("abcdef");
s1.append("123");
s1.append("456").append("789");
System.out.println(s1);
}
运行结果如下:
这里通过 append 方法来完成对字符串的拼接。
StringBuffer
把 String 转化为 StringBuffer
通过 new 一个 StringBuffer 对象,然后使用 append 方法来完成转化:
public static StringBuffer func() {
String str = "abcdef";
StringBuffer s = new StringBuffer();
s.append(str);
return s;
}
这里也可以用同样的方法转化为 StringBuilder 。
转化为 String
通过 toString 方法来转化为 String:
public static String func2() {
StringBuffer s = new StringBuffer();
return s.toString();
}
这里的转化为 String ,StringBuffer 和 StringBuilder 都是使用 toString 方法
逆序字符串
- StringBuffer 比 StringBuilder 多了一个关键字 synchronized 保证线程的安全
- 在多线程的情况下 用 StringBuffer 会更安全 如果是单线程 就用 StringBuilder
public static void main(String[] args) {
StringBuilder s = new StringBuilder("abcdef");
s.reverse();
System.out.println(s);
StringBuffer s1 = new StringBuffer("12345");
s1.reverse();
System.out.println(s1);
}
这里也是通过 reverse 方法来逆序字符串。运行结果如下: