使用或“|” java 中语句的运算符

using or "|" operator for statements in java

假设我有一个数组 a[] ,如果我想更改 a[i] 的值并将其更改为零,我可以通过使用临时变量来完成。

int temp = a[i];
a[i] = 0;

但是我遇到了类似这样的代码

int temp = a[i] | (a[i] = 0);

我很难理解这一点。请解释它有效吗?使用类似类型的代码是一种好习惯吗?

直接代码的目的是从数组中获取一个值并将其在数组中的位置设置为0

让我们看看棘手的代码是如何做到的。

| 运算符是按位或运算符。首先,对 a[i] 求值,无论值是多少,都是左操作数。接下来,括号强制 a[i] = 0 进行计算。这会将数组元素设置为 0| 的右操作数现在是 0。使用值 0 执行按位或运算不会更改其他值。 temp =右边的整个表达式的值是a[i]的原始值。这具有在一个语句中完成简单代码所做的所有事情的效果。

这段代码很棘手,不是很好的做法,因为它很混乱。我永远不会使用这种技术。