成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

String、StringBuilder、StringBuffer的愛恨情仇

stormjun / 1121人閱讀

摘要:當(dāng)然大多數(shù)情況下就是我們是在單線程下進(jìn)行的操作,所以大多數(shù)情況下是建議用而不用的,就是速度的原因。

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

下文以StringBuffer為例

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

簡(jiǎn)單比較:

String 長(zhǎng)度大小不可變

StringBuffer 長(zhǎng)度可變、線程安全、速度較慢

StringBuilder 長(zhǎng)度可變、線程不安全、速度最快

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

解釋:

在執(zhí)行速度方面的比較:StringBuilder > StringBuffer

StringBuffer與StringBuilder,他們是字符串變量,是可改變的對(duì)象,每當(dāng)我們用它們對(duì)字符串做操作時(shí),實(shí)際上是在一個(gè)對(duì)象上操作的,不像String一樣創(chuàng)建一些對(duì)象進(jìn)行操作,所以速度就快了。

StringBuilder:線程非安全的

StringBuffer:線程是安全的(synchronized關(guān)鍵字進(jìn)行修飾)

當(dāng)我們?cè)谧址彌_區(qū)被多個(gè)線程使用時(shí),JVM不能保證StringBuilder的操作是安全的,雖然他的速度最快,但是可以保證StringBuffer是可以正確操作的。當(dāng)然大多數(shù)情況下就是我們是在單線程下進(jìn)行的操作,所以大多數(shù)情況下是建議用StringBuilder而不用StringBuffer的,就是速度的原因。

對(duì)于三者使用的總結(jié):

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

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

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

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

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

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

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

(2) 轉(zhuǎn)換方式

※ String → StringBuffer

String s = “Hello”

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

//通過append()方法

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

※ StringBuffer → String

StringBuffer buffer = new StringBuffer(“java”)

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

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

首先java并不支持運(yùn)算符重載。

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

所以我們可以通過“+”符號(hào) 將多個(gè)字符串進(jìn)行拼接

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

我們可以看到代碼被編譯器自動(dòng)優(yōu)化成使用StringBuilder方式拼接

運(yùn)行效率得到了保證

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/74928.html

相關(guān)文章

  • prototype 與 __proto__ 愛恨情仇

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

    Render 評(píng)論0 收藏0
  • MySQL常見兩種存儲(chǔ)引擎:MyISAM與InnoDB愛恨情仇

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

    BWrong 評(píng)論0 收藏0
  • MySQL常見兩種存儲(chǔ)引擎:MyISAM與InnoDB愛恨情仇

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

    gougoujiang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<