无法找到原因以及如何输出128

时间:2015-07-05 08:10:35

标签: java

我对下面的节目感到困惑。这里输出为128。

    int i=0;
        while(Integer.valueOf(i)==Integer.valueOf(i))
            i++;
        System.out.println(i);

output: 128

1 个答案:

答案 0 :(得分:4)

JVM将int类的Integer值缓存在-128到127之间。因此,以下语句将返回true到127:

Integer.valueOf(i)==Integer.valueOf(i)

超过127时,valueOf默认返回一个新的Integer对象。

while循环的最后一次迭代中,i将为127,i++会将其更改为128.这就是输出为128而不是127的原因。