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

时间:2015-08-21 21:24:19

标签: java arrays boolean-logic

假设我有一个数组a [],如果我想改变a [i]的值并将其改为零,我可以使用像temp这样的临时变量来实现。

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

但我遇到了与此类似的代码

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

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

1 个答案:

答案 0 :(得分:7)

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

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

|运算符是按位运算符。首先,评估a[i],无论左边的操作数是什么值。接下来,括号将强制a[i] = 0进行评估。这会将数组元素设置为0,而|的右操作数现在为0。按位或使用值0执行不会更改其他值。 temp =右侧的整个表达式的值是a[i]的原始值。这样就可以在一个声明中完成简单代码所做的一切。

这段代码很棘手,这不是好习惯,因为它令人困惑。我永远不会使用这种技术。