美文网首页
String, Stringbuffer, StringBuil

String, Stringbuffer, StringBuil

作者: 挖打发 | 来源:发表于2021-03-31 23:56 被阅读0次

    一、Java String 类——String字符串常量

    需要注意的是,String的值是不可变的,这就导致每次对String的操作都会生成**新的String对象,这样不仅效率低下,而且大量浪费有限的内存空间。我们来看对String操作时内存变化:

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

    总结:
    1 String 是不可变的,StringBuffer、StringBuilder是可变的
    2 String 、StringBuffer是线程安全的,StringBuilder是线程不安全的 (StringBuffer的append操作用了synchronized)
    3 String对象串联的效率最慢,单线程下字符串的串联用StringBuilder,多线程下字符串的串联用StringBuffer
    4 在编译阶段就能够确定的字符串常量,完全没有必要创建String或StringBuffer对象。直接使用字符串常量的"+"连接操作效率最高
    5 一般来说 执行时间上从快到慢: StringBuilder、StringBuffer、String

    相关文章

      网友评论

          本文标题:String, Stringbuffer, StringBuil

          本文链接:https://www.haomeiwen.com/subject/bwszhltx.html