[英]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.