只是想知道这会是什么输出以及为什么?我明白那个 真正 真正 将打印,但我不确定如何评估(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;
}
}
答案 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);