Java布尔语句
只是想知道它的输出是什么,为什么?我明白 真的 真的 将被打印,但我不确定如何评估(flag1和&flag2)?有没有一种方法可以扩展这句话,让我明白它的真正含义?谢谢大家!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.
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);
}