繁体   English   中英

具有Integer.MAX_VALUE的Java循环

[英]java loop with Integer.MAX_VALUE

我偶然发现了如此奇怪的代码,我为什么不呢?

public class CrazyTest {

    public static void main(String[] args) {

        long val = 0L;
        for (int i = 0; i < Integer.MAX_VALUE; i++) {
            val = i;
        }
        System.out.println("val = "+val);

        int kk =Integer.MAX_VALUE;
        System.out.println("kk = "+kk);

        long val2 = 0L;
        for (int i = 0; i < Integer.MAX_VALUE; i++) {
            val2 = i;
        }
        System.out.println("val2 = "+val2);
    }
}

奇怪的1是“ val =”,您两次运行时会多种多样,值是“ val = 493794”,“ val = 675042”为什么呢?

奇怪的2是为什么“ kk = 2147483647”和“ val2 = 2147483645”,为什么差值是2,而不是1?

我的环境是[Mac OS 64bit 10.8.3],蚀是[Indigo],而jdk是[JavaSE6 MacOS默认值]

您可以使用Integer.MAX_VALUE-1解决JVM错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM