Java 无法找到输出为128的原因和方式

Java 无法找到输出为128的原因和方式,java,Java,我对下面的程序有些困惑。这里我得到的输出是128 int i=0; while(Integer.valueOf(i)==Integer.valueOf(i)) i++; System.out.println(i); output: 128 JVM为Integer类缓存-128到127之间的int值。因此,以下语句将返回true,最多返回127: Integer.valueOf(i)==Integer.valueOf(i) 默认

我对下面的程序有些困惑。这里我得到的输出是128

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

output: 128

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

Integer.valueOf(i)==Integer.valueOf(i)
默认情况下,超过127,
valueOf
返回一个新的
Integer
对象


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

JVM为
Integer
类缓存介于-128和127之间的
int
值。因此,以下语句将返回true,最多返回127:

Integer.valueOf(i)==Integer.valueOf(i)
默认情况下,超过127,
valueOf
返回一个新的
Integer
对象


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

正是如此。若要自己计算,请将
valueOf
更改为
parseInt
,然后看看会发生什么。@Musaddique请在此处阅读@user3469481 parseInt无效。因为我是int。若要自己计算,请将
valueOf
更改为
parseInt
,然后看看会发生什么。@Musaddique请在此处阅读@user3469481 parseInt无效。因为我是int。