国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

String、StringBuilder、StringBuffer的愛恨情仇

stormjun / 1095人閱讀

摘要:當然大多數情況下就是我們是在單線程下進行的操作,所以大多數情況下是建議用而不用的,就是速度的原因。

第三階段 JAVA常見對象的學習 StringBuffer和StringBuilder類 (一) StringBuffer類的概述 (1) 基本概述

下文以StringBuffer為例

前面我們用字符串做拼接,比較耗時并且也耗內存(每次都會構造一個新的string對象),而這種拼接操作又是比較常見的,為了解決這個問題,Java就提供了兩個字符串緩沖區類。StringBuffer和StringBuilder供我們使用。

簡單比較:

String 長度大小不可變

StringBuffer 長度可變、線程安全、速度較慢

StringBuilder 長度可變、線程不安全、速度最快

-----------------------------------------------------------------------------------------------------------------

解釋:

在執行速度方面的比較:StringBuilder > StringBuffer

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

StringBuilder:線程非安全的

StringBuffer:線程是安全的(synchronized關鍵字進行修飾)

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

對于三者使用的總結:

1.如果要操作少量的數據用 = String
2.單線程操作字符串緩沖區 下操作大量數據 = StringBuilder
3.多線程操作字符串緩沖區 下操作大量數據 = StringBuffer

(2) StringBuffer的構造方法
//無參構造方法
StringBuffer()
    
//指定容量的字符串緩沖區對象
StringBuffer(int size)
    
//指定字符串內容的字符串緩沖區對象
StringBuffer(String str)
(二) StringBuffer 類的功能 (1) 添加功能
//可以把任意類型添加到字符串緩沖區里,并且返回字符串緩沖區本身(this)
public StringBuffer append (String str)

//在offset位置把任意類型的數據插入到字符串緩沖區中,并且返回字符串緩沖區本身(this)
public StringBuffer insert(int offset,String str)
(2) 刪除功能
//刪除指定位置的字符,并且返回本身
public StringBuffer deleteCharAt(int index)

//刪除從指定位置開始指定位置結束的內容,并且返回本身
public StringBuffer delete(int start, int end) 
(3) 替換功能
//從start到end用str代替
public StringBuffer replace(int start,int end,String str)
(4) 反轉功能
//Eg: 好你界世 → 世界你好
public StringBuffer reverse()
(5) 截取功能
//從start位置開始截取,取以后字符串,但不返回本身,原數據不影響
public String substring(int start)

//截取start到end之間的字符串
Publci Stirng substring(int start, int end)
(三) String 和 StringBuffer 類相互轉換 (1) 轉換原因:

String → StringBuffer 是為了使用后者的功能

StringBuffer → String 可能需要后者的類型

(2) 轉換方式

※ String → StringBuffer

String s = “Hello”

//通過構造方法
StringBuffer a = new StringBuffer(s);

//通過append()方法

StringBuffer a = new StringBuffer();
a.append(s);

※ StringBuffer → String

StringBuffer buffer = new StringBuffer(“java”)

//通過構造方法
String str = new String (buffer);

//通過toString()方法
String str = buffer.toString();
(四) “+” 和 StringBuilder 類的愛恨情仇

首先java并不支持運算符重載。

(String類中的 “+”“+=”是java中僅有的兩個重載過的運算符)

所以我們可以通過“+”符號 將多個字符串進行拼接

將這段代碼利用 javap -c filename 反編譯

我們可以看到代碼被編譯器自動優化成使用StringBuilder方式拼接

運行效率得到了保證

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/74928.html

相關文章

  • prototype 與 __proto__ 愛恨情仇

    摘要:原文經歷了上次的的六道坎發現編故事有點上癮,而且記憶效果也不錯哈哈,今天繼續嘮叨一下與的愛恨情仇。它是萬物的盡頭,繼承于虛無,為。接著由其衍生出第二神,另外一個,也就是。也估計是讓人引起誤解的源頭。所以接下來的問題就更容易了,比如。 原文:https://blog.crimx.com/2017/0... 經歷了上次的《JavaScript This 的六道坎》 發現編故事有點上癮,而且...

    Render 評論0 收藏0
  • MySQL常見兩種存儲引擎:MyISAM與InnoDB愛恨情仇

    摘要:雖然性能極佳,而且提供了大量的特性,包括全文索引壓縮空間函數等,但不支持事務和行級鎖,而且最大的缺陷就是崩潰后無法安全恢復。 一 MyISAM 1.1 MyISAM簡介 MyISAM是MySQL的默認數據庫引擎(5.5版之前),由早期的 ISAM (Indexed Sequential Access Method:有索引的順序訪問方法)所改良。雖然性能極佳,而且提供了大量的特性,包括全...

    BWrong 評論0 收藏0
  • MySQL常見兩種存儲引擎:MyISAM與InnoDB愛恨情仇

    摘要:雖然性能極佳,而且提供了大量的特性,包括全文索引壓縮空間函數等,但不支持事務和行級鎖,而且最大的缺陷就是崩潰后無法安全恢復。 Java面試通關手冊(Java學習指南,歡迎Star,會一直完善下去,歡迎建議和指導):https://github.com/Snailclimb/Java_Guide 一 MyISAM 1.1 MyISAM簡介 MyISAM是MySQL的默認數據庫引擎(5.5...

    gougoujiang 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<