成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

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

string、stringbuffer和stringbuilder有什么區(qū)別?java中有三個類負責字符的操作。是一個單字符操作,對字符串進行操作。不可變類。它也對字符串進行操作,但它是可變的。Str

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

java中有三個類負責字符的操作。

是一個單字符操作,

對字符串進行操作。不可變類。

它也對字符串進行操作,但它是可變的。

String:

該對象不是原始類型。

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

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

String是最終類,也就是說,它不能被繼承。

StringBuff:

是一個可變對象,當它被修改時,不會像String一樣重新建立。

它只能由構造函數建立,

StringBuff:罐頭公司。;不要通過支付價值符號來向他支付價值。

sb歡迎來到這里!//錯誤

對象建立后,會在內存中分配內存空間,最初會保存一個null。到StringBuff:

是一個變量對象,與StringBuff:。

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

str在這里

其實的處理步驟就是建立一個StringBuffer,讓侯調用append(),最后,

然后StringBuffer toSting()

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

而且因為String對象是不可變的,每次操作Sting都會重新建立一個新的對象來保存新的值。

這樣原來的對象就沒用了,會被垃圾回收,也會影響性能。

請看下面的代碼:

26個英文字母被添加了5000次,

字符串tempstr abcdefghijklmnopqrstuvwxyz

int乘以5000

long lstart1()

字符串str

for (int i 0 i lt times i ) {

str tempstr

}

長lend1()

長時間(lend1 - lstart1)

(時間)

可惜我的電腦不是超級計算機,每次結果也不一定一樣,一般是46687左右。

那是46秒。

讓 讓我們再看一下下面的代碼。

字符串tempstr abcdefghijklmnopqrstuvwxyz

int乘以5000

long lstart2()

StringBuffer sb new StringBuffer()

for (int i 0 i lt times i ) {

(臨時)

}

長lend2()

長時間2 (lend2 - lstart2)

(時間2)

結果是16,有時是0。

所以結論很明顯,StringBuffer的速度幾乎是String的一萬倍。當然這個數據不是很準確。因為循環(huán)次數是10萬,所以差別更大。如果你不喜歡,試試看。;不要相信我。

根據以上所述:

str在這里

其實的處理步驟就是建立一個StringBuffer,讓侯調用append(),最后,

然后StringBuffer toSting()

所以這里的str可以等同于

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

(此處)

str()

所以上面直接用來連接String的代碼基本可以等價于下面的代碼。

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

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

兩個類的工作原理不同。:String類是傳統的修改。改變字符串的,它確實可以完成將一個字符串添加到另一個字符串的工作,但是在。NET框架,這個操作真的不劃算。因為系統先將兩個字符串寫入內存,然后刪除原來的string對象,再創(chuàng)建一個String對象,讀取內存中的數據并賦給它。來來去去花了很多時間。

在系統下使用StringBuilder類時,情況并非如此。文本名稱空間。它提供的Append方法可以在已有對象的原位置修改字符串,簡單直接。

如果要給一個字符串增加很多操作,StringBuilder類花費的時間和String類根本不是一個數量級。