Java布尔语句

Java布尔语句,java,if-statement,boolean,Java,If Statement,Boolean,只是想知道它的输出是什么,为什么?我明白 真的 真的 将被打印,但我不确定如何评估(flag1和&flag2)?有没有一种方法可以扩展这句话,让我明白它的真正含义?谢谢大家! public class project{ public static void main(String[] args) { boolean flag1 = isHoopy(202); boolean flag2 = isFrabjuous(202); System.

只是想知道它的输出是什么,为什么?我明白 真的 真的 将被打印,但我不确定如何评估(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;
        }

}

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

false,false(二进制表示法中的00) false,true(二进制表示法中的01) 真、假(二进制表示法中的10) 真,真(二进制表示法中的11)

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

您可能有其他情况,例如:

对于false,false(00):

对于false,true(01):

对于真、假(10):


调试代码本可以向您解释一切。我在这里提供一些:

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);
}

回到java的基本操作符&如果我们谈论数字世界,它代表“AND”操作符。在java术语中,&&是逻辑AND运算符,只比较操作数的布尔值。它接受两个表示布尔值的操作数,并对它们进行延迟计算。“&&”仅在第一个测试为真时执行第二个测试。 以身作则

在简单的数学中,可以将&&运算与乘法进行比较

1=正确

0=错误

1*1=1=>true&&true=true

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

0*0=0=>false&&false=false

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

有没有一种方法可以扩展此语句,以便我理解它的真正含义?

现在如果(标志1和标志2)
Java首先计算flag1。如果它发现flag1为true,则只会移动到check flag2,就像它发现flag1为false一样。检查flag2没有用,因为在任何情况下,结果都将为false。

它还应该打印
ping!砰,您将通过使用调试器单步执行代码来看到这一点。
flag1和&flag2
有什么不清楚的地方?如果你不知道
&&
的意思,你真的应该先读一本初学者的书/教程。我理解&&的意思,但是我只是被If语句抛出,没有像我习惯的那样真正呈现条件,例如If(x>10)。我现在可以看出,它不需要像if(flag1==true)这样表示。
flag1 = isHoopy(202);
flag2 = isFrabjuous(-202);
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);
}