【问题标题】:Java - OR operator in an equals expressionJava - 等于表达式中的 OR 运算符
【发布时间】:2018-11-28 05:31:05
【问题描述】:

有人可以向我解释以下几行 Java 代码吗?

if (a == b){
theArray[element1][element2] = theArray[element1][element2 - 1] || theArray[element1][element2]
}

theArray 是一个布尔型二维数组。

我从未见过在等于表达式中使用逻辑或(||)。 数组元素怎么可能等于某事或某事?我非常感谢有助于理解数组元素如何等于某物或某物......

【问题讨论】:

  • theArray 似乎是二维布尔数组,可以解释其余部分。
  • 这是一个二维布尔数组,但我还是不明白。我已经编辑了我的问题以反映这一点
  • 由于二维数组包含布尔值,所以这样做是有效的,theArray[1][1] = theArray[1][0] || theArray[1][0] 假设element1 =1element2 =1
  • 在这种情况下,如果元素是布尔数据,这将起作用,例如 element[0][0] = element[0][1] ||元素[0][2],即:元素[0][0] = false ||真的。这将给出错误的你需要看看真值表。为了使用该运算符
  • @RakeshaShastri 现在我明白了(我想)。是不是和theArray[element1][element2] = (theArray[element1][element2 - 1] || theArray[element1][element2])做的一样;`

标签: java logic logical-operators


【解决方案1】:

我从未见过在等号表达式中使用逻辑或 (||)

首先,这里没有equals expression,是赋值。

使这令人困惑的是缺少括号

考虑

theArray[element1][element2] = (theArray[element1][element2 - 1] || theArray[element1][element2]);

可能相当于

theArray[element1][element2] = (true || false);

【讨论】:

  • 应用括号并不是真正需要的,尽管它使代码更具可读性,但不可能发生首先分配与前两个元素一起发生然后与最右边的元素进行或运算的情况,因为这不会产生任何java中的意义。
  • @PushpeshKumarRajwanshi 感谢您的补充评论。 它使代码更具可读性 - 是的,这确实是问题的关键,不是吗。
  • 是的,尽管我的评论是给你的,但它也延伸到 OP :) 如果 OP 有同样的困惑,它不可能先发生分配然后 OR 操作。而且由于java支持它,它不应该被认为是其他方式。虽然为了使代码更清晰,但最好在此类表达式周围使用括号。
猜你喜欢
  • 2011-01-03
  • 1970-01-01
  • 2021-06-04
  • 1970-01-01
  • 2016-06-14
  • 2012-10-30
  • 2014-08-24
  • 2013-08-09
  • 2013-11-18
相关资源
最近更新 更多