如果Statement示例帮助JAVA

时间:2013-10-23 11:21:04

标签: java if-statement

我目前正在阅读OCA Java SE 7程序员I学习指南,我需要帮助理解一个例子。这是代码:

boolean b;
    boolean bValue = (b = true);
    //Evaluates to true

    if(bValue)
        System.out.println("TRUE");
    else
        System.out.println("FALSE");

    if (bValue = false)
        System.out.println("TRUE");
    else
        System.out.println("FALSE");

    if(bValue == false)
        System.out.println("TRUE");
    else
        System.out.println("FALSE");

我遇到此代码的问题是第二个输出。为什么这是假的而不是真的? 这是bValue的情况现在是假的,因此不满足if显示“FALSE”的含义吗?

编辑:我知道=和==之间的区别。我不明白的是它不应该打印“TRUE”吗?

提前致谢。

4 个答案:

答案 0 :(得分:7)

因为在这一行:

if (bValue = false)

将值false分配bValue,表达式的结果为false

答案 1 :(得分:4)

赋值bValue = false调用equals的运算符方法。 equals运算符返回右侧值。这样就可以将equals运算符链接起来:

boolean foo;
boolean bar;
foo = bar = false;

bValue = false中,equals运算符的结果是实际被评估的结果,所以它是错误的。

答案 2 :(得分:2)

它评估为false,因为使用了=运算符,而不是==。换句话说,第二个if语句将值false赋给变量bValue。

答案 3 :(得分:0)

分配为假,而不是比较机智。

这就是你应该将其编码为:

的原因
if (!bValue)

为什么你有一个反模式。