Java StringBuilder构造函数实现容易发生异常
当使用现有字符串或字符序列初始化时,Java StringBuilder构造函数实现容易发生异常,java,stringbuilder,Java,Stringbuilder,当使用现有字符串或字符序列初始化时,StringBuilder的初始容量为StringBuilder构造函数中代码的原始text+16: super(str.length() + 16); 我的查询如果原始长度接近整数.MAX_值,该怎么办 它将抛出一个NegativeArraySizeException还是将int改为long以正确执行?它将抛出一个NegativeArraySizeException,因为整数将被环绕 实际上,这与: int len = Integer.MAX_VALUE;
StringBuilder
的初始容量为StringBuilder
构造函数中代码的原始text+16
:
super(str.length() + 16);
我的查询如果原始长度接近整数.MAX_值
,该怎么办
它将抛出一个
NegativeArraySizeException
还是将int改为long以正确执行?它将抛出一个NegativeArraySizeException
,因为整数将被环绕
实际上,这与:
int len = Integer.MAX_VALUE;
// here we are trying to create an array of size -2147483633
char [] value = new char[len + 16];
它将抛出NegativeArraySizeException此处预期的
NegativeArraySizeException
:
String
实现,String
在内部使用char[]
来保存单个字符。因此,最大字符串长度实际上取决于char[]
大小李>
int(非整数)
对数组的各个位置进行索引,因此字符串的最大长度可以是整数。MAX_值
和任何大于该值的值都会引发异常,因为JVM
将无法对大于最大int
值的各个位置进行索引
由于此约束,对于任何扩展超出最大允许限制(在本例中为最大int值)的数组,都会引发
NegativeArraySizeException
。为什么不试试呢?“那么,真的需要这么长的绳子吗?”CarlosHeuberger——我试着和大家分享我的答案,请检查一下Balbeer纯啤酒--aah tera account hai…(Y)