溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

String與StringBuffer在java 中有什么不同

發(fā)布時間:2020-12-02 16:23:32 來源:億速云 閱讀:161 作者:Leah 欄目:編程語言

本篇文章為大家展示了String與StringBuffer在java 中有什么不同,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

1. String 類

 String的值是不可變的,這就導致每次對String的操作都會生成新的String對象,不僅效率低下,而且大量浪費有限的內存空間。

   String a = "a"; //假設a指向地址0x0001

   a = "b";//重新賦值后a指向地址0x0002,但0x0001地址中保存的"a"依舊存在,但已經不再是a所指向的,a 已經指向了其它地址。

   因此String的操作都是改變賦值地址而不是改變值操作。

2. StringBuffer是可變類,和線程安全的字符串操作類,任何對它指向的字符串的操作都不會產生新的對象。 每個StringBuffer對象都有一定的緩沖區(qū)容量,當字符串大小沒有超過容量時,不會分配新的容量,當字符串大小超過容量時,會自動增加容量。

  StringBuffer buf=new StringBuffer(); //分配長16字節(jié)的字符緩沖區(qū)
  StringBuffer buf=new StringBuffer(512); //分配長512字節(jié)的字符緩沖區(qū)
  StringBuffer buf=new StringBuffer("this is a test")//在緩沖區(qū)中存放了字符串,并在后面預留了16字節(jié)的空緩沖區(qū)。

3.StringBuffer

  StringBuffer和StringBuilder類功能基本相似,主要區(qū)別在于StringBuffer類的方法是多線程、安全的,而StringBuilder不是線程安全的,相比而言,StringBuilder類會略微快一點。對于經常要改變值的字符串應該使用StringBuffer和StringBuilder類。

1)首先String、StringBuffer、StringBuilder在JDK中都被定義為final類,這意味著他們不可以被繼承。

2)String最常見,與StringBuffer相比,String的性能較差,因為對String類型進行改變的時候都會重新生成一個新的String對象,這在字符串拼接操作時很明顯,因此內容經常改變的字符串不應該使用String,如果不考慮多線程,則應使用StringBuilder。

3)StringBuffer生成一個對象后,在進行字符串拼接操作時,調用append方法即可,不會產生新的對象,僅對對象本身進行操作,性能比String要高。另外StringBuffer是線程安全的,因此適合在多線程中使用,也正因為如此,速度跟StringBuilder相比會比較慢。

4)StringBuilder的使用方法跟StringBuffer類似,但其是非線程安全的,因此一般常用于單線程,效率比StringBuffer高。

上述內容就是String與StringBuffer在java 中有什么不同,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI