美文网首页饥人谷技术博客
String StringBuffer StringBuilde

String StringBuffer StringBuilde

作者: 宇哥996 | 来源:发表于2020-12-29 12:28 被阅读0次

    String:

    给String赋值,会在常量池中查找是否有相同的字符串常量,如果有则返回栈中的引用,如果没有则创建常量返回引用.

    new String()除了在栈和常量池中创建对象之外,同时会在堆中创建对象.

    StringBuffer:

    线程安全的String,jdk1.0之后出现,初始容量为16个字符,源码如下

    StringBuffer 不会像String一样改变字符串就会重新生成一个对象,而是以连接的方式直接拼接字符串.

    append(String str)为StringBuffer提供的线程安全的字符串追加方法,由源码可知追加通过synchronized实现线程安全,关于如何实现线程安全的底层原理,会在之后的juc专栏中详细剖析.

    setChat(int index,char ch) 可以做字符替换操作,同样线程安全.

    当然,synchronized实现线程安全的同时大大降低了字符串操作的效率.

    StringBuilder:

    非线程安全的的字符串对象,同样提供append()方法的各种操作重载,拼接替换删除某个字符的操作,在没有线程安全问题的前提下,此种操作效率最高.

    总结:

    1.String创建字符串效率较低,适合少量字符串操作的场景

    2.StringBuffer使用synchronized关键字保证操作安全性,但同时损失了性能,适合安全性较高的场景使用.

    3.StringBuilder线程不安全,操作高效,适合安全性要求较低但又需要很高的操作效率的场景使用.

    相关文章

      网友评论

        本文标题:String StringBuffer StringBuilde

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