当使用现有的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
。