我偶然发现了这些奇怪的代码,我不知道为什么?
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],eclipse是[Indigo],而jdk是[JavaSE6 MacOS默认]
答案 0 :(得分:0)
您可以使用Integer.MAX_VALUE-1
解决JVM错误