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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

[Java学习]Striing StringBuffer StringBuilder 的比

發布時間:2025/7/14 java 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [Java学习]Striing StringBuffer StringBuilder 的比 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
版權聲明:本文為博主原創文章,轉載請注明出處http://blog.csdn.net/u013132758。 https://blog.csdn.net/u013132758/article/details/52159425

最近發現對java中一些比較基礎的東西掌握還是不夠,比如今天遇到的String,StringBuffer,StringBuilder之間的區別。這篇文章為大家詳細解釋這三者之間的區別。

三者速度上的較量:

StringBuilder > StringBuffer ?>String.

這是為什么呢?為什么String的效率最低?我

String:字符串常量

StringBuffer:字符變量

StringBuilder:字符串變量

從上面的名字可以看到,String是“字符常量”,也就是不可改變的對象。對于這句話的理解你可能會產生這樣一個疑問? ,比如這段代碼:

<span style="font-size:14px;">String str = "qwerty"; str = str+1; System.out.print(str);</span>

輸出結果:qwert1

從上面的例子可以看到str明明是被我們改變了的。為什么說String不可改變昵?其實這是一種欺騙。我們可以用JVM來解釋這段代碼:

首先創建String對象str,再給它賦值qwerty;再創建一個新的String對象str,讓它執行第二行代碼,所以我們每次調用String對象時其實是創建一個新的String對象。而之前的String對象會通過GC自動回收。所以String的效率才會這么低。

而StringBuffer與StringBuilder就不一樣了,他們是字符串變量,是可改變的對象,每當我們用它們對字符串做操作時,實際上是在一個對象上操作的,這樣就不會像String一樣創建一些而外的對象進行操作了,當然速度就快了。

StringBuilder與 StringBuffer?

    StringBuilder:線程非安全的

    StringBuffer:線程安全的

當我們在字符串緩沖去被多個線程使用是,JVM不能保證StringBuilder的操作是安全的,雖然他的速度最快,但是可以保證StringBuffer是可以正確操作的。當然大多數情況下就是我們是在單線程下進行的操作,所以大多數情況下是建議用StringBuilder而不用StringBuffer的,就是速度的原因。

?

?????????? 對于三者使用的總結: 1.如果要操作少量的數據用 = String

          ?????????? ? ?2.單線程操作字符串緩沖區 下操作大量數據 = StringBuilder

          ???????????? ?3.多線程操作字符串緩沖區 下操作大量數據 = StringBuffer



總結

以上是生活随笔為你收集整理的[Java学习]Striing StringBuffer StringBuilder 的比的全部內容,希望文章能夠幫你解決所遇到的問題。

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