编译期限制
String x = "abcd"; // 字面量
如果我们将 字符串 定义为字面量形式,编译时JVM会将其放入常量池中,这时候JVM对常量池存储String类型做出了限制。
常量池中,每个 cp_info 项的格式必须相同,它们都以一个表示 cp_info 类型的单字节 “tag”项开头。后面 info[]项的内容 由tag 的类型所决定。
String类型的表示是 CONSTANT_String ,我们来看下CONSTANT_String具体是如何定义的。
length=2^16-1 等于65535,由于符号位要占一位,所以等于65534
运行时限制
String 运行时的限制主要体现在 String 的构造函数上。下面是 String 的一个构造函数
public String(char value[], int offset, int count) {
......
}
上面的count值就是字符串的最大长度。在Java中,int的最大长度是2^31-1。所以在运行时,String 的最大长度是2^31-1。
转载:https://blog.csdn.net/zhipengfang/article/details/115713951