String、StringBuffer、StringBuilder
1、是否可变
String类中使用字符数组保存字符串,如下可知因为有final修饰符,所以String对象是不可变的。
private final char value[];
StringBuffer与StringBuilder都继承自AbstractStringBuilder类,在AbstractStringBuilder中也是使用字符数组保存字符串,如下可知这两种对象都是可变的。
char[] value;
2、是否线程安全
String中的对象是不可变的,也就可以理解为常量,显然线程安全。
StringBuffer对方法加了同步锁,所以是线程安全的。
StringBuilder并没有对方法加同步锁,所以是非线程安全的。
String
实现字符串倒序:字符串“abcde”变成“edcba”
String src1 = "abcde";
String src2 = new StringBuilder(src1).reverse().toString();
网友评论