Java布尔语句

时间:2017-02-11 09:33:33

标签: java if-statement boolean

只是想知道这会是什么输出以及为什么?我明白那个 真正 真正 将打印,但我不确定如何评估(flag1&& flag2)?有没有办法扩展这个声明,以便我能理解它的真正含义?谢谢!

public class project{
    public static void main(String[] args) {
        boolean flag1 = isHoopy(202);
        boolean flag2 = isFrabjuous(202);
        System.out.println(flag1);
        System.out.println(flag2);
        if (flag1 && flag2) {
        System.out.println("ping!");
        }
        if (flag1 || flag2) {
        System.out.println("pong!");
        }
        }

        public static boolean isHoopy(int x) {
        boolean hoopyFlag;
        if (x%2 == 0) {
        hoopyFlag = true;
        } else {
        hoopyFlag = false;
        }
        return hoopyFlag;
        }

        public static boolean isFrabjuous(int x) {
        boolean frabjuousFlag;
        if (x > 0) {
        frabjuousFlag = true;
        } else {
        frabjuousFlag = false;
        }
        return frabjuousFlag;
        }

}

3 个答案:

答案 0 :(得分:2)

回到java&&的基础操作员如果我们谈论数字世界,它是代表'AND'运算符的运算符。在java术语&&是逻辑AND运算符仅比较操作数的布尔值。它需要两个表示布尔值的操作数,并对它们进行惰性评估。'&&'如果第一个测试也是如此,则仅执行第二次测试。 举个例子

你可以比较&&操作乘以简单的数学表示

1 =是真的

0 =假

1 * 1 = 1 =>真实&& true = true

1 * 0 = 0 =>真实&& false = false

0 * 0 = 0 =>虚假&& false = false

0 * 1 = 0 =>虚假&& true = false

是否可以扩展此声明,以便了解它的真正含义?

现在如果(flag1&& flag2) Java首先评估flag1。如果它发现flag1为true,那么它只会移动到检查flag2,就好像它发现flag1为false,没有使用检查flag2,因为在任何情况下结果都将为false。

答案 1 :(得分:1)

调试代码可能已经解释了一切。我在这里提供一些:

boolean flag1 = isHoopy(202); // flag1 = true
boolean flag2 = isFrabjuous(202); // flag2 = true

System.out.println(flag1); // prints: true
System.out.println(flag2); // prints: true

if (flag1 && flag2) { // true && true = true, so this will be evaluated
    System.out.println("ping!"); // prints: ping!
}

if (flag1 || flag2) { // true || true = true, so this will be evaluated
    System.out.println("pong!"); // prints: pong!
}

<强>改进:

你可以缩短方法:

public static boolean isHoopy(int x) {
    return (x % 2 == 0);
}

public static boolean isFrabjuous(int x) {
    return (x > 0);
}

答案 2 :(得分:0)

两个布尔变量的组合可以有4种可能性(2 ^ 2 = 4):

false,false(二进制表示法为00) false,true(二进制表示法为01) true,false(二进制表示法为10) true,true(二进制表示法为11)

在您的代码中,您只有一个组合:true,true(11)

您可能还有其他案例,例如:

对于false,false(00):

flag1 = isHoopy(201);
flag2 = isFrabjuous(-202);

对于false,true(01):

flag1 = isHoopy(201);
flag2 = isFrabjuous(202);

对于true,false(10):

flag1 = isHoopy(202);
flag2 = isFrabjuous(-202);