Java中String接受的最大字符串的长度是多少
2个回答
展开全部
我们可以使用串接操作符得到一个长度更长的字符串,那么,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字符,那么双引号中字符的数量会更少(一
个中文字符占用三个字节)。如果超出这个数量,在编译的时候编译器会报错
是使用域
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字符,那么双引号中字符的数量会更少(一
个中文字符占用三个字节)。如果超出这个数量,在编译的时候编译器会报错
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询