结论:从编译后的字节码文件看,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();
在Java5 中引入了一种主要用于数组的增强型 for 循环。 while 循环 while是最基本的循环,它的结构为: while(布尔表达式){//循环内容} 只要布尔表达式为 true,循环就会一直执行下去。 实例 Test.java 文件代码: publicclassTest{publicstaticvoidmain(String[]args){intx=10;while(x<20){System.out.print("val...
while(true)是一种无限循环的实现方式,适用于需要不确定次数的循环场景。 如何终止while(true)循环? 使用break语句跳出循环,终止循环的执行。 while(true)与for循环的区别是什么? while(true)结构适用于不确定循环次数的场景,而for循环通常用于已知循环次数的场景。 break语句的作用是什么? break语句用于跳出当前循环,...
方法一: 在想要跳出的循环结构(while、do-while、for循环)前面加标识符加冒号,然后在控制语句(break、continue)后面加上该标识符,就能跳转至标记过的循环了 代码示例public static void main(String[] args) { Scanner scanner = new Scanner(System.in); _:while(true) System 标识符 for循环 java中while tr...
for(;;)和while(true)区别 从寓意上来看,两种写法都是无限循环 从效率上看,while(true)每次循环要判断循环条件,for(;;)循环没有判断,理论上节省机器指令。 下面我们就通过查看编译后的代码,来证明以下for(;;)和while(true)的区别 首先整理一个带编译的测试代码,如下 ...
Java中for(;;)和while(true)的区别 目录QgMsl1、问题来源2、比较2.1 测试代码for2.2 测试代码while3、结论 1、问题来源 在阅读java的JDK源码时,发现大部分写源码的大佬http://多采用for(;;)的方式来死循环,比如说AQS(AbstractQueuedSynchronizer)中大量使用的自旋的方式获取共享状态。
顺带一提,在Java里我是倾向于写while (true)的,不过我也不介意别人在他们自己的项目里写for (;;)。 至于Java里while (true)与for (;;)哪个“效率更高” 这种规范没有规定的问题,答案都是“看实现”,毕竟实现只要保证语义符合规范就行了,而...
从效率上看,while(true)每次循环要判断循环条件,for(;;)循环没有判断,理论上节省机器指令。 下面我们就通过查看编译后的代码,来证明以下for(;;)和while(true)的区别 首先整理一个带编译的测试代码,如下 通过javac 将Test.java 编译成Test.class 字节码文件 ...
Java中for(;;)与while(true)的区别 for(;;)与while(true)在java中只看个人喜好,二者没区别! 请看下图: 编译后的字节码都一样,根本没有什么区别。 但为啥网上有的人说二者有区别呢? 那是因为在C语言中 1 2 3 4 5 编译前 编译后 while(1); mov eax,1...
while(true):编译器识别为while语句,条件为布尔字面量true 语义分析阶段 在语义分析阶段,编译器会: 对于for(;;),验证省略所有表达式是否合法 对于while(true),验证条件表达式是否为布尔类型 优化处理 现代Java编译器会对这两种结构进行优化: 两种形式通常会被优化为相同的中间表示 ...