Java变量如何与自身不同?

2022-08-31 13:13:04

我想知道这个问题是否可以在Java中解决(我是该语言的新手)。这是代码:

class Condition {
    // you can change in the main
    public static void main(String[] args) { 
        int x = 0;
        if (x == x) {
            System.out.println("Ok");
        } else {
            System.out.println("Not ok");
        }
    }
}

我在实验室中收到了以下问题:如果不修改条件本身,如何跳过第一种情况(即使条件变为假)?x == x


答案 1

一个简单的方法是使用 Float.NaN

float x = Float.NaN;  // <--

if (x == x) {
    System.out.println("Ok");
} else {
    System.out.println("Not ok");
}
Not ok

你可以用 Double.NaN 做同样的事情。


摘自 JLS §15.21.1。数值相等运算符 ==!=

浮点相等性测试根据 IEEE 754 标准的规则执行:

  • 如果任一操作数为 NaN,则 的结果为 是,但结果为 。==false!=true

    事实上,检验是当且仅当 的值是 NaN。x!=xtruex

...


答案 2
int x = 0;
if (x == x) {
    System.out.println("Not ok");
} else {
    System.out.println("Ok");
}

推荐