StringBuffer与StringBuilder

StringBuffer与StringBuilder

/* 不同之处
1、StringBuffer多线程安全,但是加了synchronized,其效率低。适用于多线程下,并发量不是很高的场景
2、性能上:StringBuilder (线程不安全)> StringBuffer(线程安全)
StringBuilder多线程不安全,没有加任何锁,其效率高。适用单线程场景
  且由于StringBuilder没有考虑同步,在单线程情况下,性能要优于StringBuffer
3、使用场景:当需要对字符串内容进行多次改变时,使用StringBuffer,StringBuilder。但因为性能原因优先使用StringBuilder ,需要多线程,共享变量时使用StringBuffer

 */
public class Test_67_StringBufferStringBuilder {
    public static void main(String[] args) {
        //1、StringBuffer的使用
           //StringBuffer比StringBuilder多了一个toStringCache字段,
           //用来在toString方法中进行缓存,连续调用toString方法,可节省性能。
        StringBuffer s = new StringBuffer("abc");
        s.append("def");//直接修改对象本身,在结尾附加def字符串
        System.out.println("s="+s);//s=abcdef
        s.reverse();
        System.out.println("s="+s);//s=fedcba
        //Stringbuffer 没有重写equals()方法,如果要比较值是否相等,需要先转为字符串再比较
        StringBuffer s1 = new StringBuffer("abc");
        StringBuffer s2 = new StringBuffer("abc");
        System.out.println("s1.equals(s2) is "+s1.equals(s2));//s1.equals(s2) is false
        System.out.println("s1.equals(s2) is "+s1.toString().equals(s2.toString()));//s1.equals(s2) is true

        //2、StringBuilder的使用(与StringBuffer一样)
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值