簡體   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