chengqiangl13795
2017-07-24 08:06
采纳率: 100%
浏览 858
已采纳

JDK中ArrayList源码问题

private static int hugeCapacity(int minCapacity) {
if (minCapacity < 0) // overflow
throw new OutOfMemoryError();
return (minCapacity > MAX_ARRAY_SIZE) ?
Integer.MAX_VALUE :
MAX_ARRAY_SIZE;
}

上面的源码hugeCapacity方法中为什么会出现minCapacity<0这种情况

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • blownewbee 2017-07-24 13:38
    已采纳

    注释写得很清楚overflow,什么叫overflow?就是溢出。
    因为int minCapacity是有符号的整数,所以存在一个很大的整数超过2^31-1,而变成负数的情况

    点赞 评论
  • 南宫文凯 2017-07-24 08:25

    此处当适用于表达时传入的并非参数,有可能是表达试,或者比较公示,防止思维漏洞

    点赞 评论
  • 白萝卜blb 2017-07-24 09:50

    万一有个 程序猿把参数传成负数,然后jdk崩了,然后谷歌闹笑话了。

    点赞 评论

相关推荐 更多相似问题