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

mc2*_*c20 3 java arrays boolean-logic

假设我有一个数组a [],如果我想改变a [i]的值并将其改为零,我可以通过使用temp变量来实现.

int temp = a[i];
a[i] = 0;
Run Code Online (Sandbox Code Playgroud)

但我遇到了类似的代码

int temp = a[i] | (a[i] = 0);
Run Code Online (Sandbox Code Playgroud)

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

rge*_*man 7

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

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

|操作是按位或操作.首先,a[i]进行评估,无论左边的操作数是什么值.接下来,括号强制a[i] = 0进行评估.这将数组元素设置为0|现在的右操作数0.按位或按值0执行不会更改其他值.右边的整个表达式的值temp =是原始值a[i].在一个语句中,这具有完成简单代码所做的一切的效果.

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