标准while(true)循环和for(;;)有什么区别?

有没有,或者在编译后两者都将映射到相同的字节码?

最佳答案

从语义上讲,它们是完全等效的。这是一个品味问题,但是我认为while(true)看起来更干净,而且乍看之下更容易阅读和理解。在Java中,它们都不引起编译器警告。

在字节码级别,它可能取决于编译器和优化级别,但是原则上发出的代码应该相同。

编辑:

在我的编译器上,使用Bytecode Outline插件,for(;;){}的字节码如下所示:

   L0
    LINENUMBER 6 L0
   FRAME SAME
    GOTO L0
while(true){}的字节码如下所示:
   L0
    LINENUMBER 6 L0
   FRAME SAME
    GOTO L0

所以是的,至少对我来说,它们是相同的。

10-04 20:13