zoukankan      html  css  js  c++  java
  • String、StringBuffer与StringBuilder的区别-陈远波

    String Stringbuffer  StringBuilder的区别:

    1、string是字符串常量,且长度是不可改变的,StringbufferstringBuilder是字符串变量

    2、Stringbuffer是线程安全的,StringBuilder是非线程安全,主要用在全局变量中。

    3、String是改变赋值的地址,而不是改变String中的值:

    如:String a = “a”;//假设它的地址是001;值a是放在常量池中的

    String a = “b”;//重新对a赋值后a指向的地址就002,且将值b放入常量池,而之前的值a也是存在的。

    4String是不可变的类,每次对String的操作都会生成新的String对象,不仅效率低下,而且会大量的浪费内存空间,对于StringBuffer,每次结果都会对StringBufer本身进行操作且不会产生新的对象和改变对象的引用,所有一般都使用Stringbuffer

    5、他们三个的运行速度不一样:

    (1)通常情况下,三个的运行速度排列为:StringBuilder>Stringbuffer>String。但也有特殊情况,

    如:String a=”a”+”b”;

    Stringbuffer b=new StringBuilder(”a”)append(”b”);

    以上的话String的速度要大于StringBuffer,因为在这种情况下JVMString a看成了 String a=”ab”了。

    6、运用场景

    (1)如果是操作少量的数据使用String

    (2)单线程操作字符串缓冲区下操作大量数据使用StringBuilder。
    3).多线程操作字符串缓冲区下操作大量数据使用StringBuffer。

    以上知识是我参考xieke90的博客进行整理,以上知识还存在一些不足,望各位多多包涵及补充指正。若需了解更多关于java的知识的可以关注后续博客

  • 相关阅读:
    Unique Binary Search Trees——LeetCode
    Binary Tree Inorder Traversal ——LeetCode
    Maximum Product Subarray——LeetCode
    Remove Linked List Elements——LeetCode
    Maximum Subarray——LeetCode
    Validate Binary Search Tree——LeetCode
    Swap Nodes in Pairs——LeetCode
    Find Minimum in Rotated Sorted Array——LeetCode
    Linked List Cycle——LeetCode
    VR AR MR
  • 原文地址:https://www.cnblogs.com/chenyuanbo/p/7493167.html
Copyright © 2011-2022 走看看