学习Java,这是我遇到的一个示例问题。我认为我理解答案的逻辑,但是有人可以确认我是否正确理解了吗?
public class Q8 {
static boolean b1;
static boolean b2;
static boolean b3;
public static void main(String[] args) {
boolean trueOrFalse = (b1 = true) || (b2 = true) && (b3 = true); //Line 9
System.out.println(b1 + ", " + b2 + ", " + b3);
}
}
程序将true, false, false
打印到控制台。
我知道为类变量分配了默认值false。
我是说对的,是因为b1 = true
为b1
分配了true值,而不是进行相等性测试(例如,为了让您相信问题而进行的测试),所以or或运算符的快捷方式保留了{{ 1}}和b2
作为默认值,这就是为什么b3
打印到控制台的原因?
答案 0 :(得分:2)
是的,这是正确的。您将设置b1,评估和快捷方式-因此其余部分不会设置/评估。
答案 1 :(得分:0)
(b1 = true)为b1分配true,然后由于OR运算符||跳过其余部分,因此b2和b3保留其默认的假值
答案 2 :(得分:-2)
基本上,您的代码与您作为人类的代码略有不同。编译器从您的一行开始写几行。
// This is not exactly how it will be translated obviously, but this should make it a little bit more understandable for you.
if (trueOrFalse = (b1 = true))
else if (trueOrFalse = (b2 = true) && (b3 = true));
这意味着b2和b3总是会被跳过
||
这是OR运算符,并且仅在第一个语句为false
时才检查第二条语句。如果OR运算符的任一侧为true,则代码将执行。