可以String保持大于Integer.MAX_VALUE个字符数

时间:2012-03-04 14:26:20

标签: java string

如果我想创建一个包含x个字符的String对象,其中x> Integer.MAX_VALUE,我能这样做吗?

感谢。

3 个答案:

答案 0 :(得分:5)

查看source

字段count,表示字符串的大小为int - 因此您将获得溢出。

private final int count;

答案 1 :(得分:3)

而不是存储长度为2 bn的单个字符串(这将使用8 GB的内存来创建btw)您可以创建字符串集合。它不容易使用,但可以有效地使用任何长度。

答案 2 :(得分:2)

由于java中的String是引用类型,因此字符串存储在连续的内存块中。必须可以通过整数索引访问此块。在32位计算机体系结构中,存储器范围必须介于0和2 ^ 32 -1之间,该体系结构等于int原始数据类型范围。

基本整数数据类型可以解决您的内存范围。因此,您不能存储超出内存的任何字符串。

此外,您不能存储超出程序堆栈的任何数据,这与系统内存相比,内存范围非常有限。当超出应用程序内存时,您将获得stackOverFlow异常。