String StringBuffer StringBuilder比较

String是基本数据类型,但是String有封装类

String a1="aa";(来自栈的常量池)

String a2=new String("aa");(封装类,来自堆的new出的对象)

a1和a2是equal的(值相同),但是不是==的(二者地址不相同)。


常用的String a3=a1+a2+...;

每次+操作都会产生新的临时string,如果拼接操作太多,会产生很多中间量的String,这会消耗内存。

stringBuilder 会产生一块初始长度的内存,用char[]数组来保存新添加的string并自动扩容,不会重复创建新string,多字符拼接推荐使用,尤其单线程,非线程安全,单线程下效率高于stringbuffer.

StringBuffer,原理同stringBuilder,但是加了很多Synchronized关键字来进行线程同步,所以多线程推荐使用,线程同步安全。

字符串比较短的情况下,三者差别不大。字符串多而长,推荐stringbuilder,多线程推荐Stringbuffer.

Stringbuilder的三种情况方式

            StringBuilder sb=new StringBuilder();
            sb.setLength(0);//推荐,实现最简单,如果设置的长度比当前的小,直接返回设置长度。
            sb.delete(0, sb.length()-1);
            sb.replace(0, sb.length()-1,"" );

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值