String、StringBuffer和StringBuilder的區別及應用場景


1. 運行速度:StringBulider>StringBuffer>String

                       String為什么運行行慢呢?

                       String:字符串常量

                       StringBuffer、StringBulider:字符串變量

                       創建String對象后,不能再改變;而StringBuffer和StrignBulider創建對象后,還可以改變(每次改變String的值,都要新創建一個對象,再將引用                           指向該對象,浪費內存空間,內存中的無用引用多了以后,jvm的GC就開始工作,系統就會慢了)。

 2.線程安全:StringBuffer是線程安全的,因為StringBuffer的很多方法中都可以使用Sychronized關鍵字,可保證線程安全,而StringBulider的方法中沒有該關鍵字,不能保證線程安全。

 3.適用場景:String:適用於少量字符串操作情況。

                      StringBulider:適用於單線程在字符串緩存區進行大量操作。

                      StringBuffer:適用於多線程在字符串緩存區進行大量操作。

 4.舉個例子:

String:每次改變String的值,都要新創建一個對象,再將引用指向該對象,浪費內存空間,內存中的無用引用多了以后,jvm的GC就開始工作,系統就會慢了。

StringBuffer:StringBuffer每次都是對對象本身進行操作,而有種特殊情況String要比StringBuffer快:

      String s="This"+"is a pen";

      StringBuffer sb=new StringBuffer("This").append("is a pen");

    創建上面這兩個的速度其實都差不多,但是下面這種就能體現出StrignBuffer的優勢了

 

      String s1="This";

      String s2="is a pen";

      String s3=s1+s2;

 

那么重點來了:具體使用場景,我找到了一個很有用的:https://www.zhihu.com/question/20101840

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM