比较一下JVM字节码:
while(true):
public class WhileAndFor {
public void test(){
while(true){
System.out.println("while...");
}
}
}
0 getstatic #2 <java/lang/System.out> 3 ldc #3 <while...> 5 invokevirtual #4 <java/io/PrintStream.println> 8 goto 0 (-8)
for(;;):
public class WhileAndFor { public void test(){ for(;;){ System.out.println("while..."); } } }
0 getstatic #2 <java/lang/System.out> 3 ldc #3 <while...> 5 invokevirtual #4 <java/io/PrintStream.println> 8 goto 0 (-8)
根据while与for;;的字节码看,一模一样,没有区别。都是执行完一句后再“GOTO”到最开始。
所以结论就是:java中 while(true)和for(;;)效率一样,没有区别