java基础面试题 String,Stringbuffer,Stringbuilder三者的区别

1 String

String:字符串常量,字符串长度不可变。Java中String是immutable(不可变)的

查看它的源码

 public String() {
        this.value = "".value;
    }

变量value

   private final char value[];

被final修饰的类不能有子类,被final修饰的变量只能在构造函数中进行一次赋值,当然这个包含局部变量和成员变量

2 StringBuffer

StringBuffer:字符串变量(Synchronized,即线程安全)。如果要频繁对字符串内容进行修改,出于效率考虑最好使用StringBuffer,如果想转成String类型,可以调用StringBuffer的toString()方法 看下它的appent()方法

  @Override
    public synchronized StringBuffer append(String str) {
        toStringCache = null;
        super.append(str);
        return this;
    }

它是被synchronized修饰的,所以它多线程环境下是安全的

3 StringBuilder

StringBuilder:字符串变量(非线程安全)。在内部,StringBuilder对象被当作是一个包含字符序列的变长数组

也看下它的appent()方法

 @Override
    public StringBuilder append(String str) {
        super.append(str);
        return this;
    }

从这二个方法中就可以看到的出来StringBuffer和StringBuilder的区别,

所以在单线程中使用StringBuffer 在多线程环境下使用StringBuilder

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值