1

在查看一个或另一个 git 上的某些代码时,有时我可以看到开发人员使用按位包含 OR 复合赋值运算符 ( |=),其中简单的赋值就足够了。不幸的是,我手头没有这个解决方案的任何代码,所以我会尽力描述它。

假设我们在java中有以下代码:

boolean found = false;
for (String s : stringSet) {
    if (s == null || s.equals("")) {
        found |= true; // <== this line
    }
}
if (!found) {
    System.out.println("No interesting string found");
}

我只问尖线。为什么人们会这样做?我知道我们可以拥有非常大量的数据,数十亿或数万亿个数据进行迭代。但是尖线是否会如此显着地改变效率?如果我将其更改为简单赋值:大量数据会明显变慢found = true;吗?

我不排除速度不是主要论点的可能性,但这对我来说似乎最有意义。

是的,我知道这段代码可以转换为方法或流,但这只是代码的简化,它会更复杂等。我们可以假设在尖线之前(甚至之前if),有大量做一些有意义的事情的代码。请不要建议“改用流”之类的建议,因为我已经知道如何进行 java 高级。我想了解这种使用按位包含 OR 的神秘解决方案的现象。

4

0 回答 0