如果Java中的Else Operator Precedence?

时间:2016-03-04 07:05:37

标签: java

答案是13然而我不明白编译器如何得到13有人可以向我解释这个吗?

public class IfClass {

    public static void main(String[] args) {

        int number1 = 1, number2 = 2, number3 = 3, number4 = 4;

        if(number2 <= 2 && !(number1 > 1) || number3 <= 4 && !(number4 > 2)
            System.out.print(1);
        else
            System.out.print(2);

        System.out.print(3);
        //output = 13
    }

}

2 个答案:

答案 0 :(得分:1)

将你的病情分解成小步骤

if(number2 <= 2 && !(number1 > 1) || number3 <= 4 && !(number4 > 2))如果为真,则在number2 <= 2 && !(number1 > 1)number3 <= 4 && !(number4 > 2)时打印1。否则会打印2

让我们采取第一个条件number2 <= 2 && !(number1 > 1) ..他们两个都应该是真的.. 由于number2为2 - 它验证了它的第一部分number2 <= 2 相似数number1是1,它不能大于1,但!使其成立。

因此我们的第一个条件是真的......它将执行System.out.print(1)并跟随我的System.out.print(3) ...因此输出为13

答案 1 :(得分:0)

如果条件满足所以它打印1然后其他只适用于一行,因为没有使用括号而System.out.print(3)不是if-else块的一部分所以它打印3 < / p>