标准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
所以是的,至少对我来说,它们是相同的。