当我运行此类时,for循环似乎提前终止
class Test {
public static void main(String[] args) {
int result = 0;
int end = Integer.MAX_VALUE;
int i;
for (i = 1; i <= end; i += 2) {
System.out.println(i);
}
System.out.println("End:" + i);
}
}
输出为:
1
3
5
...
31173
31175
End:31177
为什么到此结束?有趣的是,如果我在for循环中删除了System.out.println(i)
,则输出将为End:-2147483647
。显然,i
中的值具有wrapped round
。
我正在使用的Java版本是
Java(TM) SE Runtime Environment (build 1.6.0_16-b01)
Java HotSpot(TM) 64-Bit Server VM (build 14.2-b01, mixed mode)
参考方案
它是Java 6中的一个已知错误。JIT错误地优化了循环。我相信Java的最新版本没有此错误。
http://vanillajava.blogspot.co.uk/2011/05/when-jit-gets-it-wrong.html
Java 6更新16已有两年多了。如果您无法更新到Java 7,建议您更新到最新版本的Java 6 update 25。
BTW Java 6将在几个月后终止免费支持(2012年12月)
如何使用system.out.println从void方法填充Jtextarea? - java我正在使用具有public void方法init()和System.out.println()的库。在我的实现中,我只能访问无效的方法init(),但无法将sout的输出获取到我的gui组件JTextarea。是否可以捕获它(使用InputStream或其他方式)?任何帮助表示赞赏。谢谢 参考方案 假设您无权访问该库并且可以更改它(对于GUI应用程序,我有点…
在小数点后三位显示秒。 -Java - java我在Java程序中使用毫秒,并将其转换为秒。我的方法执行完此操作后,它将以长格式返回秒。System.out.println("[" + threadID + "]" + " " + "SeqSum res=" + grandTotal + " secs=" …
System.out.println-此方法是否在Java中链接? - java我想知道下面的Java代码:“ System.out.println”。我对此是正确的:“系统”是静态类。 “ .out”是“系统”类的方法。这是我对“ .println”有点困惑的地方-这是一个什么类/对象的方法?另外,这个概念被称为“方法链接”吗?谢谢GF 参考方案 不,这不是方法链接。您正确地认为System是一个类(只是一个常规类,不是“静态”,只有…
字符串内存分配 - java哪一个更好System.out.println("hello world"); 要么String s="hello world"; System.out.println(s); 参考方案 对于此简单示例,在内存分配方面没有区别。
System.out.printf不打印整数参数 - java我是Java编程的新手,无法从另一个类返回方法。这两个类都可以编译并成功运行。我可以从一个类中调用一个简单的int,但是当我想计算用户输入的两个输入整数时,我只会得到一个空格。这是我的计算课class calculations { public final int AGE = 53; public int numbers(int num1, int num2…