Integer包装类错题整理

Integer.MAX_VALUE & Integer_MIN_VALUE

如下程序打印的结果是什么呢?

public class Demo21 {
    public static final int END = Integer.MAX_VALUE;
    public static final int START = END - 100;
    public static void main(String[] args) {
        int count = 0;
        for (int i = START; i <= END; i++)
            count++;
        System.out.println(count);
    }
}

错误思路:

错误答案:100

刚看到这道题,我以为答案是100. 我真傻……
也就是说,假如 END = 3; START = 3 - 3
那么 for(int i = START; i <= END; i++){count++;}
我肯定认为等于3…智障吧
用笔算都知道,最后count = 4
所以,如果有人认为上面代码的答案是101,虽然错了,也比我聪明…

错误答案:101

我也不知道自己会不会说答案是101,毕竟我认为答案是100…。
在for循环里,他的条件是:

for(int i = START; i <= END; i++)

在这里要注意,当i == END 时, i 还要 ++, 那么就是 2147483647 再加一。肯定不对呀,因为 2147483647 再加一 是 -2147483648 啊。

当 i == END时, 他的二进制是:
01111111,11111111,11111111,11111111
我们知道, int类型只有32位, 如果 上面这串二进制再加一, 那就是
10000000,00000000,00000000,00000000
然后此时 i 就变成了最小值,是 -2147483648 ,那当然满足循环条件: <= END. 肯定就会继续循环。
所以这段代码就是无限循环,当然不会有输出结果~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值