【问题标题】:Java boolean return typesJava 布尔返回类型
【发布时间】:2013-11-29 09:37:05
【问题描述】:

我对这段代码感到困惑,我认为对于布尔值,你必须返回 'true' 或 'false' 而没有别的,那么为什么这段代码可以工作?

public static boolean diagonal(Location l, Location l1) {
    return l.getX() != l1.getX() && l.getY() != l1.getY();
}

【问题讨论】:

  • 返回一个布尔值,它检查 l 的 x 值是否不等于 l1 的 x 值,y 值是否相同
  • boolean 是一个类型。可以将类型视为 的容器。 truefalseboolean 类型中仅有的两个值。表达式(计算)具有类型,只要该类型不是void,就意味着它们具有值。 (void 是没有值的类型。)你的函数说“我将返回一个boolean 类型”。如答案中所述,您的表达式由子表达式组成,返回 boolean。 (也就是说,它返回一个适合boolean 类型的值,truefalse。)所以一切都检查出来了。

标签: java boolean return


【解决方案1】:

!=&& 运算符的计算结果为 boolean。它们各自执行测试并根据测试结果评估布尔值truefalse(第一个测试不等式,第二个是逻辑与)。

请参阅JLS 15.21 以了解相等运算符及其计算结果的说明。特别是:

等式表达式的类型始终为boolean

请参阅JLS 15.23 以了解条件 AND 运算符及其计算结果的说明。特别是:

条件与表达式的类型始终为boolean

也试试这个:

System.out.println(5 != 5);
System.out.println(5 != 6);
System.out.println(true && false);
System.out.println(true && true);

【讨论】:

    【解决方案2】:

    这将返回一个boolean。如果l.getX()“不等于”l1.get(X)“和”l.getY()“不等于”l1.get(y),则“返回真”,否则“返回假”。

    !=&& 是二元运算符,每个都返回一个 boolean

    【讨论】:

    • 非常感谢,解释清楚
    • @user2997839 没问题。很高兴我能帮上忙。
    • @user2997839 由于您是 SO 新手,请在此处使用tour
    【解决方案3】:

    它返回真或假。

    l.getX() != l1.getX() && l.getY() != l1.getY();
    

    是检查 1.get(X) 是否不等于 l1.getX() AND 1.get(Y) 是否不等于 l1.getY() 的语句。

    【讨论】:

      【解决方案4】:

      因为

      return l.getX() != l1.getX() && l.getY() != l1.getY();
      

      是一个布尔表达式,返回语句会做结果

      如果你表达了订单,这是等价的

      return ((l.getX() != l1.getX()) && (l.getY() != l1.getY()));
      

      true 或 false 取决于评估的结果,最后它返回一个布尔值,因为只执行布尔运算。

      boolean a = l.getX() != l1.getX(); 
      boolean b = l.getY() != l1.getY();
      boolean c = a && b;
      
      return c; 
      

      【讨论】:

      • 真假取决于评估结果
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-30
      • 2016-03-15
      • 2015-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多