理解String,StringBuilder,StringBuffer的区别

1.String

1) 成员变量有final类型的char数组,代表其是不可变的。

2) 线程安全与否就不用讨论了,都不可修改了。

3) 一般b=b+b; 其实b不是被修改了,而是生成了新的String对象。

/** The value is used for character storage. */
private final char value[];

 

2.StringBuilder

1) 继承的  AbstractStringBuilder类中,有成员变量char[]数组,可以对其增删改查。

2) 线程不安全的

* The value is used for character storage.
     */
    char[] value;

 

3.StringBuffer

1)继承的  AbstractStringBuilder类中,有成员变量char[]数组,可以对其增删改查。同时,有一个缓存用的char数组toStringCache.用来记录toString()后的结果。如果后续修改就会变null。

2)是线程安全的。基本上所有的修改相关方法都用synchronized修饰,如下:

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

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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值