运算符| =在Java中意味着什么?

时间:2013-03-31 08:31:07

标签: java operators calculator

我对|=运算符的含义感到困惑。

起初,我认为checker|=(1<<val)表示checker= checker+checker|(1<<val)。我调试了代码,结果告诉我checker|=(1<<val)checker= checker+checker|(1<<val)不同。

|=运算符如何工作?

public static boolean isUniqueChars(String str){
   int checker = 0;
   for(int i=0; i<str.length();++i){
       int val = str.charAt(i)-'a';
       if((checker &(1<<val))>0) return false;
       checker |=(1<<val);  // what does it mean ?
      // checker= checker +checker|(1<<val);
   }
   return true;
}

4 个答案:

答案 0 :(得分:2)

意味着

checker = checker|(1<<val)

它将有效地将位数[val]设置为1 - 按位OR,其中模式为单个1左移[val]次

答案 1 :(得分:2)

checker |=(1<<val);

相同
checker = checker|(1<<val)

|是逻辑OR运算(位级)

答案 2 :(得分:2)

a |= b;

是简短形式:

a = a | b;

这适用于C,C ++,Java,Python,可能还有更多语言,所有这些都受到C的启发。

答案 3 :(得分:1)

通常,foo x= bar表示foo = foo x bar。因此foo |= barfoo = foo | bar