String,StringBuffer,Stringbuilder的区别

 

----------------------------------------------------------------------------------------------------------------

1.在使用到到String到时候每次用到这个常亮到时候,都会在内存中创建一个新到对象,然后在对其进行赋值,
    而不是使用原来到常量,当其使用完流之后,再由垃圾回收机制(Garbage collection)    GC进行回收。
    所以可以看出这个占用资源量较大。
    例如:
          String s = "abcd";
                     s = s+1;
         这里的第一个s和第二个s。

 注意:String str = “This is only a” + “ simple” + “test”;
    在这个到时候速度是非常快到,但是这个str本来就是“This is only a simple test”,所以它是比较快到,
    但是如果是
    String str2 = “This is only a”;

    String str3 = “ simple”;

    String str4 = “ test”;

    String str1 = str2 +str3 + str4;
    这样的话就没有那么快了。

2.而StringBuffer和StringBuilder,在使用到时候就不会像String那样再从新创建对象,
    而是直接使用之前到变量,再对其进行赋值。    
      
3.StringBuilder与 StringBuffer
      StringBuilder是线程非安全
      StringBuffer是线程安全
      
      非线程安全指的是当多个线程操作同一个对象的时候可能会出现问题,而线程安全则不会有问题;
   但是线程安全要使用到synchronized(线程同步机制)来控制线程的同步,因而线程安全相应的性能相对低下;
      当不是多个线程访问同一个对象的时候使用非线程安全的实现类是没有问题的。
      使用时机来说,只要是不是多个线程访问同一个对象的情况二者都可以使用
      
4. 对于三者使用的总结: 1.如果要操作少量的数据用 = String

                        2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder

                        3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值