国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

java判斷stringbuilder不為空 string、stringbuffer和stringbuilder有什么區(qū)別?

string、stringbuffer和stringbuilder有什么區(qū)別?java中有三個(gè)類(lèi)負(fù)責(zé)字符的操作。是一個(gè)單字符操作,對(duì)字符串進(jìn)行操作。不可變類(lèi)。它也對(duì)字符串進(jìn)行操作,但它是可變的。Str

string、stringbuffer和stringbuilder有什么區(qū)別?

java中有三個(gè)類(lèi)負(fù)責(zé)字符的操作。

是一個(gè)單字符操作,

對(duì)字符串進(jìn)行操作。不可變類(lèi)。

它也對(duì)字符串進(jìn)行操作,但它是可變的。

String:

該對(duì)象不是原始類(lèi)型。

作為不可變對(duì)象,一旦創(chuàng)建,其值就不能修改。

對(duì)現(xiàn)有字符串對(duì)象的任何修改都是創(chuàng)建一個(gè)新對(duì)象,然后保存新值。

String是最終類(lèi),也就是說(shuō),它不能被繼承。

StringBuff:

是一個(gè)可變對(duì)象,當(dāng)它被修改時(shí),不會(huì)像String一樣重新建立。

它只能由構(gòu)造函數(shù)建立,

StringBuff:罐頭公司。;不要通過(guò)支付價(jià)值符號(hào)來(lái)向他支付價(jià)值。

sb歡迎來(lái)到這里!//錯(cuò)誤

對(duì)象建立后,會(huì)在內(nèi)存中分配內(nèi)存空間,最初會(huì)保存一個(gè)null。到StringBuff:

是一個(gè)變量對(duì)象,與StringBuff:。

字符串字符串新字符串(歡迎使用)

str在這里

其實(shí)的處理步驟就是建立一個(gè)StringBuffer,讓侯調(diào)用append(),最后,

然后StringBuffer toSting()

這種情況下,String的連接操作會(huì)比StringBuffer多一些額外的操作,當(dāng)然效率會(huì)打折扣。

而且因?yàn)镾tring對(duì)象是不可變的,每次操作Sting都會(huì)重新建立一個(gè)新的對(duì)象來(lái)保存新的值。

這樣原來(lái)的對(duì)象就沒(méi)用了,會(huì)被垃圾回收,也會(huì)影響性能。

請(qǐng)看下面的代碼:

26個(gè)英文字母被添加了5000次,

字符串tempstr abcdefghijklmnopqrstuvwxyz

int乘以5000

long lstart1()

字符串str

for (int i 0 i lt times i ) {

str tempstr

}

長(zhǎng)lend1()

長(zhǎng)時(shí)間(lend1 - lstart1)

(時(shí)間)

可惜我的電腦不是超級(jí)計(jì)算機(jī),每次結(jié)果也不一定一樣,一般是46687左右。

那是46秒。

讓 讓我們?cè)倏匆幌孪旅娴拇a。

字符串tempstr abcdefghijklmnopqrstuvwxyz

int乘以5000

long lstart2()

StringBuffer sb new StringBuffer()

for (int i 0 i lt times i ) {

(臨時(shí))

}

長(zhǎng)lend2()

長(zhǎng)時(shí)間2 (lend2 - lstart2)

(時(shí)間2)

結(jié)果是16,有時(shí)是0。

所以結(jié)論很明顯,StringBuffer的速度幾乎是String的一萬(wàn)倍。當(dāng)然這個(gè)數(shù)據(jù)不是很準(zhǔn)確。因?yàn)檠h(huán)次數(shù)是10萬(wàn),所以差別更大。如果你不喜歡,試試看。;不要相信我。

根據(jù)以上所述:

str在這里

其實(shí)的處理步驟就是建立一個(gè)StringBuffer,讓侯調(diào)用append(),最后,

然后StringBuffer toSting()

所以這里的str可以等同于

新的字符串緩沖區(qū)

(此處)

str()

所以上面直接用來(lái)連接String的代碼基本可以等價(jià)于下面的代碼。

字符串tempstr abcd:需要在程序中頻繁修改和連接字符串,使用StringBuff

string類(lèi)和stringbuild類(lèi)的區(qū)別為什么一定要有這兩個(gè)類(lèi)?

兩個(gè)類(lèi)的工作原理不同。:String類(lèi)是傳統(tǒng)的修改。改變字符串的,它確實(shí)可以完成將一個(gè)字符串添加到另一個(gè)字符串的工作,但是在。NET框架,這個(gè)操作真的不劃算。因?yàn)橄到y(tǒng)先將兩個(gè)字符串寫(xiě)入內(nèi)存,然后刪除原來(lái)的string對(duì)象,再創(chuàng)建一個(gè)String對(duì)象,讀取內(nèi)存中的數(shù)據(jù)并賦給它。來(lái)來(lái)去去花了很多時(shí)間。

在系統(tǒng)下使用StringBuilder類(lèi)時(shí),情況并非如此。文本名稱(chēng)空間。它提供的Append方法可以在已有對(duì)象的原位置修改字符串,簡(jiǎn)單直接。

如果要給一個(gè)字符串增加很多操作,StringBuilder類(lèi)花費(fèi)的時(shí)間和String類(lèi)根本不是一個(gè)數(shù)量級(jí)。