列出 java 上布尔运算符的优先顺序
Listing the precedence order of the Boolean operators on java
我的作业是列出布尔运算符的优先顺序,并对以下表达式求值:
true || true && false
true && true || false
但是,我对这意味着什么以及如何做感到困惑。有人可以澄清这个作业要求什么吗?
要获得一个想法,您可以在下面查看 table。它显示了所有 Java 运算符,从最高优先级到最低优先级,以及它们的结合性
取自here
所以你可以根据这个看到,两个结果都是true
运算符优先级仅仅是应用运算的顺序。例如,考虑以下数学语句:
10 + 6 / 2
嗯,(10 + 6) / 2 = 16 / 2 = 8
,但是 10 + (6 / 2) = 10 + 3 = 13
,很明显,执行操作的顺序很重要。从数学上讲,这些答案中哪一个是正确的?如果你在考试中被问到这个问题,你应该选择哪个答案?运算符优先级告诉你。
问题是要求您为布尔运算符做类似的事情。
试试下面的程序:
public class HelloWorld {
public static void main(String []args){
System.out.println(true || true && false);
System.out.println(true && true || false);
}
}
原来两人都是true
.
为了进一步了解这一点,您可以尝试使用括号来了解这如何改变语句的真值。例如,
System.out.println((true || true) && false);
是false
。将其与
的事实进行对比
System.out.println(true || true && false);
是true
。这说明 Java 执行操作的顺序是什么?好吧,我写括号的方式改变了结果,很明显这是不对的。你可以由此推断 Java 一定是在做括号 "the other way":
System.out.println(true || (true && false));
如果您查看@Sand 的回答中的图表,&&
实际上确实比 ||
具有更高的优先级,因此首先应用此操作。这正是我们在这里看到的。
我的作业是列出布尔运算符的优先顺序,并对以下表达式求值:
true || true && false
true && true || false
但是,我对这意味着什么以及如何做感到困惑。有人可以澄清这个作业要求什么吗?
要获得一个想法,您可以在下面查看 table。它显示了所有 Java 运算符,从最高优先级到最低优先级,以及它们的结合性
取自here
所以你可以根据这个看到,两个结果都是true
运算符优先级仅仅是应用运算的顺序。例如,考虑以下数学语句:
10 + 6 / 2
嗯,(10 + 6) / 2 = 16 / 2 = 8
,但是 10 + (6 / 2) = 10 + 3 = 13
,很明显,执行操作的顺序很重要。从数学上讲,这些答案中哪一个是正确的?如果你在考试中被问到这个问题,你应该选择哪个答案?运算符优先级告诉你。
问题是要求您为布尔运算符做类似的事情。
试试下面的程序:
public class HelloWorld {
public static void main(String []args){
System.out.println(true || true && false);
System.out.println(true && true || false);
}
}
原来两人都是true
.
为了进一步了解这一点,您可以尝试使用括号来了解这如何改变语句的真值。例如,
System.out.println((true || true) && false);
是false
。将其与
System.out.println(true || true && false);
是true
。这说明 Java 执行操作的顺序是什么?好吧,我写括号的方式改变了结果,很明显这是不对的。你可以由此推断 Java 一定是在做括号 "the other way":
System.out.println(true || (true && false));
如果您查看@Sand 的回答中的图表,&&
实际上确实比 ||
具有更高的优先级,因此首先应用此操作。这正是我们在这里看到的。