java 死循环 while(true) vs for(;;)

简介: 今天在看AtomicInteger的乐观锁实现(CAS);读源码发现它的死循环式是这么写的 /** * Atomically decrements by one the current value. * * @return the previous value

今天在看AtomicInteger的乐观锁实现(CAS);读源码发现它的死循环式是这么写的

/**
     * Atomically decrements by one the current value.
     *
     * @return the previous value
     */
    public final int getAndDecrement() {
        for (;;) {
            int current = get();
            int next = current - 1;
            if (compareAndSet(current, next))
                return current;
        }
    }

采用的是for(;;) 而我常用的习惯是用while(true),这两者有什么区别呢。是不是for(;;)要比while(true)快呢?

做了如下测试

/**
 * MainTest
 *
 * @author lilin
 * @date 16/12/1
 */
public class MainTest {
    public static void main(String[] args) {
        forTest();
        whileTest();
    }

    public static void forTest(){
        for(;;){
            System.out.println("for");
        }
    }

    public static void whileTest(){
        while (true){
            System.out.println("while");
        }
    }
}

**编译 javac -p src/main/java/classes src/main/java/MainTest.java
编译后的文件MainTest.class 代码如下**

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

public class MainTest {
    public MainTest() {
    }

    public static void main(String[] var0) {
        forTest();
        whileTest();
    }

    public static void forTest() {
        while(true) {
            System.out.println("for");
        }
    }

    public static void whileTest() {
        while(true) {
            System.out.println("while");
        }
    }
}

发现最后都变成了while(true) 得出的结论他们最终的效果应该是一样的 。

相关文章
|
2月前
|
存储 安全 Java
ArrayList vs. LinkedList: Java集合框架的比较与应用
ArrayList vs. LinkedList: Java集合框架的比较与应用
|
5月前
|
Java C++ 网络架构
【Java】@ApiOperation vs @ApiResponse in Swagger
【Java】@ApiOperation vs @ApiResponse in Swagger
45 0
|
7月前
|
Java
Java 循环结构 - for, while 及 do...while
Java 循环结构 - for, while 及 do...while
|
8月前
|
Java 程序员 Apache
编程语言比拼之Java VS C++
Java和C++都是非常受欢迎的编程语言,各有各的优势和适用场景。以下是对它们的简要比较:
|
5天前
|
Java 测试技术
Java一分钟之-循环结构:for与while循环
【5月更文挑战第8天】本文探讨了Java中两种主要的循环结构——`for`和`while`循环。`for`循环适用于已知迭代次数的情况,常见问题包括无限循环、初始化错误和作用域混淆。`while`循环适用于循环次数未知但条件明确的情况,需注意更新条件、死循环初始化和逻辑错误。避免错误的策略包括明确循环目的、检查边界条件、管理迭代变量、进行代码审查和测试,以及使用增强型`for`循环。正确理解和使用这些循环能提升代码质量。
11 0
|
1月前
|
Java Android开发 C++
Kotlin vs Java:选择最佳语言进行安卓开发
【4月更文挑战第13天】Java曾是安卓开发的主流语言,但Kotlin的崛起改变了这一局面。Google在2017年支持Kotlin,引发两者优劣讨论。Java以其成熟稳定、强大生态和跨平台能力占优,但代码冗长、开发效率低和语言特性过时是短板。Kotlin则以简洁语法、空安全设计和高度兼容Java脱颖而出,但社区和生态系统仍在发展中,可能存在学习曲线和性能问题。选择语言应考虑项目需求、团队熟悉度、维护性、性能和生态系统。无论选择哪种,理解其差异并适应新技术至关重要。
|
1月前
|
Java
java判断时间是否为节假日(或指定的日期),是的话返回true,否返回false
java判断时间是否为节假日(或指定的日期),是的话返回true,否返回false
30 0
|
3月前
|
Java API
深入理解 Java 循环结构:while、do while、for 和 for-each 循环
循环可以执行一个代码块,只要达到指定的条件。循环很方便,因为它们节省时间,减少错误,并使代码更易读。
61 1
|
4月前
|
Java
java判断时间是否为节假日(或指定的日期),是的话返回true,否返回false
java判断时间是否为节假日(或指定的日期),是的话返回true,否返回false
59 0
|
5月前
|
Java 程序员 C++
C++ vs Python vs Java
C++ vs Python vs Java
33 0