首先给出结论:
String在内存中的最大长度理论上是int型变量的最大值,Integer.MAX_VALUE,
String的字面常量的最大长度为CONSTANT_Utf8_info表决定,一般为65535.
1、String的内部实现
通过一个字符数组来维护字符序列,其声名如下:
private final char value[];
所以,String的最大长度取决于字符数组的最大长度,因为字符数组长度只能是byte,char,short,int而不能是long型,所以这也说明最大长度,另一方面,我们知道String类有一个方法,str.length() 它的返回值是int型变量,声明如下:
public int length()
所以这也说明了最大长度的理论值,但在实际中,要比理论值小,
public class mainClass {
public static void main(String[] args) {
// TODO Auto-generated method stub
char[] value=new char[Integer.MAX_VALUE];
System.out.println("");
}
}
这个错误是内存溢出错误,所以系统无法分配这么大的内存空间。
现在的问题是,计算机系统可以分配多大的内存呢?
这其实和很多硬件相关的因素有关,下面通过程序来测试最大的内存空间。
这里写代码片
本文讨论了String类型在Java中的最大长度限制,从理论值Integer.MAX_VALUE出发,考虑到实际内存分配情况,介绍了String内部实现原理,并提供了测试代码示例。
6107

被折叠的 条评论
为什么被折叠?



