String、StringBuffer、StringBuilder的区别

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();

你可能感兴趣的:(String、StringBuffer、StringBuilder的区别)