在ArrayList底层中,如果当前所需的最小容量minCapacity<0时为什么会报OOM异常,size+1怎么小于0呢

img

img

在ArrayList底层中,如果当前所需的最小容量minCapacity<0时为什么会报OOM异常,size+1怎么小于0呢

你这不是1.8的吧,1.8里面不长这样;
minCapacity 意思是所需的最小容量,也就是前面的 size+1;就是 最小需要当前size+1;
if (newCapacity - minCapacity <= 0) 就是新计算出来的容量比最小所需的还要小,说明超出了Integer.MAX_VALUE ,所以会出现负数

public static void main(String[] args) {
int a = Integer.MAX_VALUE;
System.out.println(a + 1);
}
你可以试试这个代码,计算一下结果。
另外 不要拿10进制考虑代码问题,计算机中使用的是二进制。如果还不明白的话,你可以学习一下二进制如何表示负数。