结论:从编译后的字节码文件看,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();
1.for一般是在循环个数已知的情况下使用的 2.while一般是在循环个数未知,且循环受到严格控制的情况下使用的。 3.do-while一般也是在循环个数未知,但是它和while最大的不同点在于,不管循环的条件是什么,do-while都会至少执行一次。 最后在给大家用这三种循环举三个1+2+3+4+。。。+100的案例: 代码语言:javas...
而用for (;;)来表达不写循环条件(也就是循环体内不用break或goto就会是无限循环)则非常直观——这就是for语句本身的功能,而且不需要写任何魔数。所以这个写法就流传下来了。 顺带一提,在Java里我是倾向于写while (true)的,不过我也不介意别人...
for死循环和while死循环编译后的字节码(编译器是可以做优化的),完全一模一样,所以两者在使用过程中,其实是没有任何区别。看到这里是不是有点生气,但是又想问问什么源码那些大佬写代码基本上不用while(true),我想主要原因还是早期C语言中for(;;)循环和while(1)编译生成的字节码不一样,for(;;)生成的字节码明显更...
1.while循环 …while 循环 3.for循环 在Java5中引入了一种主要用于数值的增加型for循环 这篇博客, 主要讲解while循环 while 是最基本的循环,他的结构如下: 1.只要布尔表达式为true (条件符合的情况下),循环就会一致执行下去 2.我们大多数情况下,会让循环停止下来,我们需要一个让表达式失效的办法结束循环 ...
for(;;)和while(true)区别 从寓意上来看,两种写法都是无限循环 从效率上看,while(true)每次循环要判断循环条件,for(;;)循环没有判断,理论上节省机器指令。 下面我们就通过查看编译后的代码,来证明以下for(;;)和while(true)的区别 首先整理一个带编译的测试代码,如下 ...
顺带一提,在Java里我是倾向于写while (true)的,不过我也不介意别人在他们本身的项目里写for (; 。效率 至于Java里while (true)与for (;;)哪一个“效率更高”jdk 这种规范没有规定的问题,答案都是“看实现”,毕竟实现只要保证语义符合规范就好了,而效率并不在规范管得着的范畴内。搜索 首先看javac对下面...
while(true)是一种无限循环的实现方式,适用于需要不确定次数的循环场景。 如何终止while(true)循环? 使用break语句跳出循环,终止循环的执行。 while(true)与for循环的区别是什么? while(true)结构适用于不确定循环次数的场景,而for循环通常用于已知循环次数的场景。 break语句的作用是什么? break语句用于跳出当前循环,...
3 ldc #3 <while...> 5 invokevirtual #4 <java/io/PrintStream.println> 8goto0 (-8) 根据while与for;;的字节码看,一模一样,没有区别。都是执行完一句后再“GOTO”到最开始。 所以结论就是:java中 while(true)和for(;;)效率一样,没有区别...
while循环:用于执行不定次数的循环,条件表达式在循环开始时进行判断,如果为true则执行循环体,否则跳过循环。 do-while循环:与while循环类似,不同之处在于它会先执行一次循环体再进行判断条件是否满足,至少会执行一次循环体。 增强for循环(foreach循环):用于遍历集合或数组中的元素,可以省略初始化、判断和更新三个部分...