① 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字符,那么双引号中字符的数量会更少(一个中文字符占用三个字节)。如果超出这个数量,在编译的时候编译器会报错。