结论:从编译后的字节码文件看,for(;;) 和 while(true) 在底层用的相同的实现,两种写法没有区别。 1、for(;;) @Test public void test(){ for(;;){ System.out.println("for"+"+++"); } } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 编译后的字节码 public void test(); flags: ACC_PUBLIC...
for死循环和while死循环编译后的字节码(编译器是可以做优化的),完全一模一样,所以两者在使用过程中,其实是没有任何区别。看到这里是不是有点生气,但是又想问问什么源码那些大佬写代码基本上不用while(true),我想主要原因还是早期C语言中for(;;)循环和while(1)编译生成的字节码不一样,for(;;)生成的字节码明显更...
注意while和do while两者的区别:while是先判断再执行如果判断不成立,就不会执行;do/while是先执行再判断,不管判断是否成立都会执行一次 2、实例 public class dowhileDemo { public static void main(String[] args) { //while循环:先判断再执行 int a = 0; while (a < 0) { System.out.println(a); a+...
相对而言,for(;;)指令少,不占用寄存器,没有判断跳转,因此比while(1)好一些。
while循环:用于执行不定次数的循环,条件表达式在循环开始时进行判断,如果为true则执行循环体,否则跳过循环。 do-while循环:与while循环类似,不同之处在于它会先执行一次循环体再进行判断条件是否满足,至少会执行一次循环体。 增强for循环(foreach循环):用于遍历集合或数组中的元素,可以省略初始化、判断和更新三个部分...
这里的区别就非常明显了,for(;;)在c语言中指令较少,也能够节省内存,没有判断跳转,是比while(1)更好的无限循环。 C编译后的指令参考:https://blog.csdn.net/baidu_29029173/article/details/51175799 最后,欢迎大家观看我的两个视频课程: Java生产环境下性能监控与调优详解Java秒杀系统方案优化 高性能高并发实战...
while(true): public class Test { public static void main(String[] args) { while(true) { } } } 在?看看汇编 for( ; ; ) public class Test2 { public static void main(String[] args) { for(;;) { } } } kk汇编 好吧,没有区别 ( ・_ゝ・) 查了一下,这么写的大佬们应该是受...
顺带一提,在Java里我是倾向于写while (true)的,不过我也不介意别人在他们自己的项目里写for (;;)。 至于Java里的for (;;)与while (true),哪个更快? 这种规范没有规定的问题,答案都是“看实现”,毕竟实现只要保证语义符合规范就行了,而效率并不在规范管得着的范畴内。 以Oracle/Sun JDK8u / OpenJDK8...
while循坏: for循环: while和for循环的对比: 区别:for 和 while 在实现循环的过程中都有初始化、判断、调整这三个部分,但是 for 循环的三个部 分⾮常集中,便于代码的维护...int cnt = 0; do { cnt++; n = n / 10; } while (n); printf("%d\n", cnt); return 0; } 问:为什么n=0的时候...