【问题标题】:Listing the precedence order of the Boolean operators on java [closed]列出Java上布尔运算符的优先顺序[关闭]
【发布时间】:2019-01-20 05:59:14
【问题描述】:

我的任务是列出布尔运算符的优先顺序,并计算以下表达式:

true || true && false
true && true || false

但是,我对这意味着什么以及如何做到这一点感到困惑。有人能澄清一下这个任务的要求吗?

【问题讨论】:

  • 这是真的,真的。您的问题是什么?
  • @user7 它要求在这里做什么?我无法理解。这个布尔表达式是什么意思?
  • 这些问题的答案可以通过一点点(重新)搜索来找到
  • 请注意 && 和 ||有点特别。它们应用一个操作,但也表现得像一个 if-then-else。 (a&&b) === ((a==true) ? b : false) (换句话说,仅当 a 为真时才考虑 b)。同样, (a||b) === ((a==false) ? b : true)

标签: java boolean operators


【解决方案1】:

要了解一下,您可以查看下表。它显示了从最高到最低优先级的所有 Java 运算符,以及它们的关联性

取自here

所以你可以根据这个看到,两个结果都是true

【讨论】:

    【解决方案2】:

    运算符优先级仅仅是应用操作的顺序。例如,考虑以下数学语句:

    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 必须以“另一种方式”做括号:

    System.out.println(true || (true && false));
    

    如果您检查@Sand 答案中的图表,&& 实际上确实比|| 具有更高的优先级,因此首先应用此操作。这正是我们在这里看到的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-29
      • 2010-09-11
      • 2017-01-14
      相关资源
      最近更新 更多