zoukankan      html  css  js  c++  java
  • String,StringBuffer,StringBuilder的区别

    1)对象的可变与不可变

    String对象不可变,StringBuffer和StringBuilder对象可变。

    2)线程是否安全

    • String中的对象不可变,String类在java.lang包中,String类是final修饰的,不能被继承,String类对象创建后不能修改,线程安全
    • StringBuffer中的方法大都采用了Synchronized关键字修饰的,线程安全
    • StingBuilder没有对方法进行加同步锁,线程不安全

    3)字符串追加速度比较 

    StringBuilder > StringBuffer > String

    由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

    初始String值为“hello”,然后在这个字符串后面加上新的字符串“world”,这个过程是需要重新在栈堆内存中开辟内存空间的,最终得到了“hello world”字符串也相应的需要开辟内存空间,这样短短的两个字符串,却需要开辟三次内存空间,不得不说这是对内存空间的极大浪费。为了应对经常性的字符串相关的操作,谷歌引入了两个新的类——StringBuffer类和StringBuild类来对此种变化字符串进行处

    小结:(1)如果要操作少量的数据用 String;

    (2)多线程操作字符串缓冲区下操作大量数据 StringBuffer;

    (3)单线程操作字符串缓冲区下操作大量数据 StringBuilder。

    转载自https://blog.csdn.net/weixin_41101173/article/details/79677982

  • 相关阅读:
    //判断安卓 和ios
    不同屏幕适配
    在iOS设备下,h5的input框失焦后页面被顶起来一部分bug 用css解决办法
    div跟随手指滑动
    滑动事件
    手指长按事件
    es6数组属性
    loading加载百分比 以及根据加载进度移动元素
    刮刮乐
    h5上传图片并预览
  • 原文地址:https://www.cnblogs.com/lhh666/p/11607192.html
Copyright © 2011-2022 走看看