在Java中,我们可能会用到"for(;;) while(true)
来写“死循环(无限循环)”,但是这两种方式有什么区别,用哪个更好呢?
其实在功能上来说没什么区别,都是一样的用来写无限循环,但是这种方式编译前后有点区别:
编译前 编译后
while (1) mov eax,1
test eax,eax
je foo+23h
jmp foo+18h
for (;;) jmp foo+23h
从上可以看出,for(;;)
编译后指令更少,占用寄存器空间就少,并且没有判断跳转,所以相对比while (true)
好,这也是为什么在大多数源码中都用for(;;)
较多。