它们的主要区别在于语法结构和可读性。 for(; true;)是一个典型的for循环,其中第一个表达式为空,第二个表达式为true,表示循环条件始终为真,第三个表达式也为空,表示循环体内没有任何操作。这种写法在某些情况下可能会使代码更难以阅读和理解。 while(true)则是一个典型的while循环,其中循环条件为true,表示循环将...
从应用场景角度考虑: 如果一个需求明确循环的次数,那么使用for循环(开发中使用for循环的几率大于while循环)。 如果一个需求,不知道循环了多少次,使用while循环。 在看JDK源码的时候发现,“死循环”有两种写法:for(;;)和while(true),我就疑问,两者有啥区别,有啥源码中多数是for(;;)这种形式的。 //编译前 //...
总之,从性能角度来看,while(true)和for(;;)之间没有显著区别。在选择时,应主要考虑代码的可读性和维护性。
可以看到,两个用法,其实都是通过goto来干的,所以,这两者其实是没啥区别的。用哪个都行 有人愿意用while(true)因为他更清晰的看出来这里是个无限循环。有人愿意用for(;;),因为有些IDE对于while(true)会给出警告。
结论:从编译后的字节码文件看,for(;;) 和 while(true) 在底层用的相同的实现,两种写法没有区别。 1、for(;;) @Test public void test(){ for(;;){ System.out.println("for"+"+++"); } } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ...
技术标签:for(;;)和while(true)的区别 (一)Java中 for(;;)和while(true)都是死循环。 1.0 代码: for @Test public void test(){ for(;;){ ... 查看原文 Now you can provide attr "wx:key" for a "wx:for" to improve performance.
对比了一下两者区别: while 编译前: while(true); 1 编译后: mov eax,1 test eax,eax je wmain+29h jmp wmain+1Eh 1 2 3 4 编译前: for(;;); 1 编译后: jmp wmain+29h 1 由上面的结果可以看出 for编译器会优化成一条汇编指令,而while编译器会有很多条汇编指令 ...
for(;;)和while(true)区别 从寓意上来看,两种写法都是无限循环 从效率上看,while(true)每次循环要判断循环条件,for(;;)循环没有判断,理论上节省机器指令。 下面我们就通过查看编译后的代码,来证明以下for(;;)和while(true)的区别 首先整理一个带编译的测试代码,如下 ...
Java中for和while循环语句的区别 从内存使用角度 for循环结束,循环中变量及时从内存中释放掉,在for循环...