日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

String、StringBuuffer、StringBuilder三者的区别

發布時間:2023/12/10 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 String、StringBuuffer、StringBuilder三者的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

可變性
String 類中使用 ?nal 關鍵字字符數組保存字符串, private final char value[] ,所以 String 對象是不可變的。
StringBuilder 與 StringBu?er 都繼承自 AbstractStringBuilder 類,在 AbstractStringBuilder 中也是使用字符數組保存字符串 char[]value 但是沒有用 ?nal 關鍵字修飾,所以這兩種對象都是可變的。
StringBuilder 與 StringBu?er 的構造方法都是調用父類構造方法也就是 AbstractStringBuilder 實現的

?

String 類

private final char value[];

?

StringBuilder 與 StringBu?er 都繼承自 AbstractStringBuilder 類

?

在 AbstractStringBuilder 中也是使用字符數組保存字符串 char[]value ,但是沒有用 ?nal 關鍵字修飾,所以StringBuilder 與 StringBu?er 這兩種對象都是可變的

?

?

線程安全性
String 中的對象是不可變的,也就可以理解為常量,線程安全。AbstractStringBuilder 是 StringBuilder 與 StringBu?er 的公共父類,定義了一些字符串的基本操作,如 expandCapacity、append、insert、indexOf 等公共 方法。StringBu?er 對方法加了同步鎖或者對調用的方法加了同步鎖,所以是線程安全的。StringBuilder 并沒有對 方法進行加同步鎖,所以是非線程安全的。
性能
每次對 String 類型進行改變的時候,都會生成一個新的 String 對象,然后將指針指向新的 String 對象。
StringBu?er 每次都會對 StringBu?er 對象本身進行操作,而不是生成新的對象并改變對象引用。相同情況下使用 StirngBuilder 相比使用 StringBu?er 僅能獲得 10%~15% 左右的性能提升,但卻要冒多線程不安全的風險。

對于三者使用的總結:

  • 操作少量的數據 = String
  • 單線程操作字符串緩沖區下操作大量數據 = StringBuilder
  • 多線程操作字符串緩沖區下操作大量數據 = StringBu?er
  • ?

    StringBu?er加了鎖synchronized

    ?

    總結

    以上是生活随笔為你收集整理的String、StringBuuffer、StringBuilder三者的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。