标签:char 字节 就是 jvm 阶段 常量 nbsp 运行 运行时
java字符串String的最大长度,要分两个阶段,编译阶段及运行时阶段
编译阶段:
在我们使用字符串字面量直接定义String的时候,会把字符串在常量池中存储一份。常量池中的每一项常量都是一个表,都有自己对应的类型。String类型,有一张固定长度的CONSTANT_String_info表用来存储文字字符串值,注意:该表只存储文字字符串值,不存储符号引用。
JVM的常量池最多可放65535个项。第0项不用。最后一项最多只能是65534(下标值)。而每一项中,若是放一个UTF-8的常量串,其长度最长是:65535个字节(不是字符)。
运行时阶段:
String内部是以char数组的形式存储,数组的长度是int类型,那么String允许的最大长度就是Integer.MAX_VALUE了,2147483647;又由于java中的字符是以16位存储的,因此大概需要4GB的内存才能存储最大长度的字符串。
标签:char 字节 就是 jvm 阶段 常量 nbsp 运行 运行时
原文地址:https://www.cnblogs.com/rgyfred/p/12217645.html