我的代码很小。我不知道为什么Java编译器如此快速地工作。
这是代码:
int a= 0;
while(true) {
a++;
if(a==0) break;
}
System.out.println(a);
如果我将println
置于while循环中,则会逐行逐行打印。
int a= 0;
while(true) {
a++;
if(a==0) break;
System.out.println(a);
}
我的问题是:Java的机制如何使它如此快速地工作(在例1中)?
答案 0 :(得分:2)
答案 1 :(得分:1)
在这两种情况下,编译器都会花费相同的时间来检查条件,但是在示例1中,您已经编写了一个额外的行,并且您必须在控制台上打印一些内容。 System.out.println是一项昂贵的操作。 它的System.out.println语句花费时间不用于检查条件。
答案 2 :(得分:0)
写入控制台是昂贵的,显示它甚至更昂贵。每个系统调用比操作谎言a++
贵1000倍,并且实际更新屏幕是>再费10倍。
JIT可以丢弃一个不做任何事情的循环。