尝试了解Java

时间:2019-04-03 15:19:04

标签: java boolean logical-operators

学习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 = trueb1分配了true值,而不是进行相等性测试(例如,为了让您相信问题而进行的测试),所以or或运算符的快捷方式保留了{{ 1}}和b2作为默认值,这就是为什么b3打印到控制台的原因?

3 个答案:

答案 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,则代码将执行。