问题需要分两个阶段去看:编译期和运行期
编译期:编译期字符串的字面量大小有限制,因为字符串编译后是UTF8Info存储的,大小是2个字节即2^16,但是null占据两个,所以65536-2=65534
运行期:创建字符串,内存是分配在堆上,但是有String源码可知
public String(char value[], int offset, int count)
最大是Integer.MAX_VALUE,约4G,所以运行期最大是4G
问题需要分两个阶段去看:编译期和运行期
编译期:编译期字符串的字面量大小有限制,因为字符串编译后是UTF8Info存储的,大小是2个字节即2^16,但是null占据两个,所以65536-2=65534
运行期:创建字符串,内存是分配在堆上,但是有String源码可知
public String(char value[], int offset, int count)
最大是Integer.MAX_VALUE,约4G,所以运行期最大是4G