java Java中String接受的最大字符串的長(zhǎng)度是多少?
Java中String接受的最大字符串的長(zhǎng)度是多少?陣列的最大長(zhǎng)度為Integer.MAX然而,當(dāng)我們編寫源代碼時(shí),如果我們以sting STR=“AAAA”的形式定義一個(gè)字符串,那么雙引號(hào)中的ASC
Java中String接受的最大字符串的長(zhǎng)度是多少?
陣列的最大長(zhǎng)度為Integer.MAX然而,當(dāng)我們編寫源代碼時(shí),如果我們以sting STR=“AAAA”的形式定義一個(gè)字符串,那么雙引號(hào)中的ASCII字符的最大數(shù)目是65534。2因?yàn)樵陬愇募?guī)范中,info表中的constantUtf8u16位無(wú)符號(hào)整數(shù)用于記錄字符串的長(zhǎng)度,最多可以表示65536字節(jié)。Java類文件使用一種變體UTF-8格式來(lái)存儲(chǔ)字符,空值由兩個(gè)字節(jié)表示,因此只剩下65536-2=65534字節(jié)。三。這也是變種UTF-8的原因。如果字符串包含非ASCII字符(如中文),則雙引號(hào)中的字符數(shù)將減少(一個(gè)漢字占用三個(gè)字節(jié))。如果超過(guò)此數(shù)字,編譯器將在編譯期間報(bào)告錯(cuò)誤。
Java中String類型有沒有長(zhǎng)度的限制?
嚴(yán)格來(lái)說(shuō),字符串確實(shí)有長(zhǎng)度限制。
1. 在字符串中使用char[]數(shù)組來(lái)存儲(chǔ)字符串的內(nèi)容。數(shù)組的下標(biāo)是integer(也可以參考字符串構(gòu)造方法string(char value[]int offset,int count),可以知道字符數(shù)用integer表示,integer的范圍(Java指定32位)是2G,即Java數(shù)組的最大長(zhǎng)度是2G,即,字符串不能超過(guò)2G個(gè)字符。
2. Java數(shù)組的大小還有其他限制嗎?實(shí)際上,數(shù)組的大小不能超過(guò)Java堆的大小,Java堆的最大大小可以由startup參數(shù)指定。如果Java堆足夠大,那么可以連續(xù)增加數(shù)組的最大長(zhǎng)度。
3. 因此,理論上,一個(gè)字符串不能超過(guò)2G個(gè)字符,而且有可能少于2G個(gè)字符。