for(;;)和while(true)区别 从寓意上来看,两种写法都是无限循环 从效率上看,while(true)每次循环要判断循环条件,for(;;)循环没有判断,理论上节省机器指令。 下面我们就通过查看编译后的代码,来证明以下for(;;)和while(true)的区别 首先整理一个带编译的测试代码,如下 通过javac 将Test.java 编译成Test.
for死循环和while死循环编译后的字节码(编译器是可以做优化的),完全一模一样,所以两者在使用过程中,其实是没有任何区别。看到这里是不是有点生气,但是又想问问什么源码那些大佬写代码基本上不用while(true),我想主要原因还是早期C语言中for(;;)循环和while(1)编译生成的字节码不一样,for(;;)生成的字节码明显更...
结论:从编译后的字节码文件看,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...
1.for一般是在循环个数已知的情况下使用的 2.while一般是在循环个数未知,且循环受到严格控制的情况下使用的。 3.do-while一般也是在循环个数未知,但是它和while最大的不同点在于,不管循环的条件是什么,do-while都会至少执行一次。 最后在给大家用这三种循环举三个1+2+3+4+。。。+100的案例: 代码语言:javas...
至于Java里while (true)与for (;;)哪个“效率更高” 这种规范没有规定的问题,答案都是“看实现”,毕竟实现只要保证语义符合规范就行了,而效率并不在规范管得着的范畴内。 首先看javac对下面俩语句的编译结果 以Oracle/Sun JDK8u / OpenJDK8...
3 ldc #3 <while...> 5 invokevirtual #4 <java/io/PrintStream.println> 8goto0 (-8) 根据while与for;;的字节码看,一模一样,没有区别。都是执行完一句后再“GOTO”到最开始。 所以结论就是:java中 while(true)和for(;;)效率一样,没有区别...
顺带一提,在Java里我是倾向于写while (true)的,不过我也不介意别人在他们本身的项目里写for (; 。效率 至于Java里while (true)与for (;;)哪一个“效率更高”jdk 这种规范没有规定的问题,答案都是“看实现”,毕竟实现只要保证语义符合规范就好了,而效率并不在规范管得着的范畴内。搜索 首先看javac对下面...
for(;;)和while(true)区别 从寓意上来看,两种写法都是无限循环 从效率上看,while(true)每次循环要判断循环条件,for(;;)循环没有判断,理论上节省机器指令。 下面我们就通过查看编译后的代码,来证明以下for(;;)和while(true)的区别 首先整理一个带编译的测试代码,如下 ...
顺带一提,在Java里我是倾向于写while (true)的,不过我也不介意别人在他们自己的项目里写for (;;)。 至于Java里的for (;;)与while (true),哪个更快? 这种规范没有规定的问题,答案都是“看实现”,毕竟实现只要保证语义符合规范就行了,而效率并不在规范管得着的范畴内。 以Oracle/Sun JDK8u / OpenJDK8...
# Java中for(;;)和while(true)的区别是什么 ## 前言 在Java编程中,创建无限循环是常见的需求,无论是用于服务器监听、事件处理还是其他需要持续运行的任务。开发者通常使用两种语法结构来实现无限循环:`for(;;)`和`while(true)`。这两种写法在功能上看似完全相同,但在实际开发中却存在一些细微差别。本文将深入探...