NegativeArraySizeException

NegativeArraySizeException

当使用现有的String或CharSequence初始化时,StringBuilder的初始容量是来自text + 16构造函数中代码的原始StringBuilder的长度:

super(str.length() + 16);


我的查询如果原始长度接近Integer.MAX_VALUE怎么办?

它会抛出NegativeArraySizeException还是将int更改为long以便正确执行?

最佳答案

NegativeArraySizeException在这里应为:


根据String实现,String在内部使用char[]来保存各个字符。因此,最大字符串长度实际上取决于char[]大小。
Java内部使用int (not Integer)来索引数组的各个位置,因此String的最大长度可以是Integer.MAX_VALUE,任何大于该长度的东西都将引发异常,因为JVM将无法索引该数组。大于最大int值的单个位置。


由于此约束,对于任何扩展超过最大允许限制(在这种情况下为最大int值)的数组,都会抛出NegativeArraySizeException

10-07 12:12