String StringBuilder StringBuffer

String字符串常量

StringBuilder字符串变量,线程不安全

StringBuffer字符串变量,线程安全


StringBuilder与StringBuffer的类继承情况

public final class StringBuilder
    extends AbstractStringBuilder
    implements java.io.Serializable, Appendable, CharSequence
 public final class StringBuffer
    extends AbstractStringBuilder
    implements java.io.Serializable, Appendable, CharSequence

StringBuidler继承自AbstractStringBuilder,同样,StringBuffer也继承自AbstractStringBuilder.有共同的父类

拿append方法举例说明:

StringBuidler

public StringBuilder append(char c) {
        super.append(c);
        return this;
}

StringBuffer

public synchronized StringBuffer append(char c) {
        super.append(c);
        return this;
}

StringBuffer对append方法添加了synchronized修饰符,同理对该类的方法操作都添加了synchronized修饰符

得出以下结论:

区别
String 字符串常量,位于运行时存储区域的方法区内
StringBuilder 字符串变量,以Java对象看待,运行时引用存于堆中,内容存于栈中
StringBuffer 同StringBuidler类同,增加了线程安全,存储位置同上

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