• 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

  • 相关阅读:
    前端知识---html
    Python3中的运算符
    Python中的print、input函数以及Python中交换两个变量解析
    我的第一个Python程序,定义主函数,eval、format函数详解,
    MySQL创建索引
    认识MySQL中的索引
    MySQL中的函数
    MySQL的查询语句
    MySQL中增删改操作
    MySQL中的运算符和时间运算
  • 原文地址:https://www.cnblogs.com/lhh666/p/11607192.html
Copyright © 2020-2023  润新知