java string intern方法 javastringintern有什么用?
javastringintern有什么用?首先,讓我們看一個(gè)例子:public static void main(string[]args)拋出異常{T/tstring a=“B”-T/tstring
javastringintern有什么用?
首先,讓我們看一個(gè)例子:
public static void main(string[]args)拋出異常{T/tstring a=“B”-T/tstring B=“B”-T/T 系統(tǒng)輸出打?。╝==b) 字符串c=“d” 字符串d=新字符串(“d”).intern() 系統(tǒng)輸出打印你能看到控制臺(tái)上打印的信息嗎?控制臺(tái)輸出true的原因是intern方法返回返回的string對(duì)象的規(guī)范化表示。調(diào)用intern方法時(shí),如果池中已經(jīng)包含一個(gè)與string對(duì)象相等的字符串(該對(duì)象由equals(object)方法確定),則池中的字符串將被返回。否則,string對(duì)象將添加到池中,并返回對(duì)string對(duì)象的引用。那么C和D相等。
一個(gè)字符串類型的值能儲(chǔ)存最大容量是多少???
呃,你可以看到源代碼,還有很多案例。字符串?dāng)?shù)組的最大長(zhǎng)度當(dāng)然是Integer.MAX但是,Java在常量池中有一個(gè)變量utf8表。該表的最大字段為65535,null占用兩個(gè)字節(jié)。因此,當(dāng)字符串填充字母時(shí),源代碼中有一個(gè)判斷(<65535),即可以放入65534個(gè)字母,但如果是漢字,則判斷條件是(<65535),即可以放入65535個(gè)漢字。當(dāng)然,以上情況都是在編譯時(shí)發(fā)生的。如果是在運(yùn)行時(shí),則最大長(zhǎng)度為Integer.MAX價(jià)值接近4G,基本上是不可能的。最長(zhǎng)的字符串場(chǎng)景應(yīng)該是序列化類,它可以持續(xù)數(shù)千年。