【随手记录】关于Java字符串长度

发布时间 2023-05-31 21:04:36作者: 空知大仙人

在java当中,在运行期间,字符串的长度是有最大限制的:21亿,也就是4GB;

在编译期间,字符串的长度最大为:65534。

字符串的内容是由一个字符数组 char[] 来存储的,由于数组的长度及索引是整数,Integer的最大范围是2^31 -1,所以数组的最大长度可以使【0~2^31-1】通过计算是大概4GB = (2* 2^31 - 1) / (1024^3) 。

但是通过翻阅java虚拟机手册对class文件格式的定义以及常量池中对String类型的结构体定义我们可以知道对于索引定义了u2有符号位,所以可以表示的最大范围是2^16 -1 = 65535。

但是由于JVM需要1个字节表示结束指令,所以这个范围就为65534了。超出这个范围在编译时期是会报错的,但是运行时拼接或者赋值的话范围是在整形的最大范围。