首先给出结论:
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("");
}
}
这个错误是内存溢出错误,所以系统无法分配这么大的内存空间。
现在的问题是,计算机系统可以分配多大的内存呢?
这其实和很多硬件相关的因素有关,下面通过程序来测试最大的内存空间。
这里写代码片