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