标准的 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
所以是的,至少对我来说,它们是相同的。
关于Java:for(;;) 与 while(true),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8880870/