① java的String對象的大小有限制嗎
String類型底層存儲是採用char[]數組的,所以說char[]數組的大小就決定了String對象的大小.由於數組的下標採用int類型,因此最大能存放的元素個數只有2147483648個,這個數也就是2G.所以說char[]數組能存儲2G大小的字元.因此在理想情況下也就是內存無限大,堆可以無限大的情況下,一個String類型的極限大小就是4G,長度為2147483648個字元
② Java中String接受的最大字元串的長度是多少
數組最大的長度為Integer.MAX_VALUE
③ 在Java中String變數的最大長度是多少
u2是無符號的16位整數,因此理論上允許的string literal的最大長度是2^16-1=65535。然而實際測試表明,允許的最大長度僅為65534,超過就編譯錯誤了,有興趣可以寫段代碼試試,估計是length還不能為0。
④ Java中String接受的最大字元串的長度是多少
我們可以使用串接操作符得到一個長度更長的字元串,那麼,string對象最多能容納多少字元呢?查看string的源代碼我們可以得知類string中
是使用域
count
來記錄對象字元的數量,而count
的類型為
int,因此,我們可以推測最長的長度為
2^32,也就是4g。
不過,我們在編寫源代碼的時候,如果使用
sting
str
=
"aaaa";的形式定義一個字元串,那麼雙引號裡面的ascii字元最多隻能
有
65534
個。為什麼呢?因為在class文件的規范中,
constant_utf8_info表中使用一個16位的無符號整數來記錄字元串的長
度的,最多能表示
65536個位元組,而java
class
文件是使用一種變體utf-8格式來存放字元的,null值使用兩個位元組來表示,因此只剩
下
65536-
2
=
65534個位元組。也正是變體utf-8的原因,如果字元串中含有中文等非ascii字元,那麼雙引號中字元的數量會更少(一
個中文字元佔用三個位元組)。如果超出這個數量,在編譯的時候編譯器會報錯
⑤ Java中String類型有沒有長度的限制
嚴格來說,String確實有長度限制。
1、String內部使用一個char[]數組來存放字元串的內容,數組下標是整型(也可以參考String的構造方法String(char value[], int offset, int count) ,可以知道字元數量是用整型表示),整型(Java規定32位)表示範圍是2G,也就是說,Java數組最大的長度是2G,即字元串不能超過2G個字元。
2、Java的數組大小還有沒有別的限制?事實上數組大小不能超過Java堆的大小,而Java堆的最大尺寸可以通過啟動參數指定,如果Java堆開得足夠大,數組的最大長度是可以不斷增大的。
3、所以,理論上,字元串不能超過2G個字元,少於2G個字元都有可能。
⑥ java中String類型有沒有限制,最大限制是多少
嚴格來說,String確實有長度限制。x0dx0aString內部使用一個char[]數組來存放字元串的內容,數組下標是整型(也可以參考String的構造方法String(char value[], int offset, int count) ,可以知道字元數量是用整型表示),整型(Java規定32位)表示範圍是2G,也就是說,Java數組最大的長度是2G,即字元串不能超過2G個字元。x0dx0aJava的數組大小還有沒有別的限制?事實上數組大小不能超過Java堆的大小,而Java堆的最大尺寸可以通過啟動參數指定,如果Java堆開得足夠大,數組的最大長度是可以不斷增大的。x0dx0a所以,理論上,字元串不能超過2G個字元,少於2G個字元都有可能。 x0dx0a但編碼時有需要注意的地方,採用明文的方式,如果超過65534個位元組,可能報編譯錯誤,可參考下列網站(有一處錯誤,整型考慮到符號位,最大隻到2G)。
⑦ Java中String接受的最大字元串的長度是多少
數組最大的長度為Integer.MAX_VALUE
1.不過,我們在編寫源代碼的時候,如果使用
Sting
str
=
"aaaa";的形式定義一個字元串,那麼雙引號裡面的ASCII字元最多隻能有
65534
個。
2.因為在class文件的規范中,
CONSTANT_Utf8_info表中使用一個16位的無符號整數來記錄字元串的長度的,最多能表示
65536個位元組,而java
class
文件是使用一種變體UTF-8格式來存放字元的,null值使用兩個位元組來表示,因此只剩下
65536-
2
=
65534個位元組。
3.也正是變體UTF-8的原因,如果字元串中含有中文等非ASCII字元,那麼雙引號中字元的數量會更少(一個中文字元佔用三個位元組)。如果超出這個數量,在編譯的時候編譯器會報錯。