2013-03-31 39 views
-3

我对|=运算符的含义感到困惑。运算符| =在Java中表示什么?

起初,我以为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; 
} 

回答

2

它意味着

checker = checker|(1<<val) 

它将有效地设定比特数[VAL]为1 - 位或带有图案那一个1左移[VAL]次

2
checker |=(1<<val); 

checker = checker|(1<<val) 

|是逻辑或运算(位水平)

2
a |= b; 

是一个简短的形式:

a = a | b; 

这同样适用于C,C++,JAVA,Python和可能一堆更多的语言,都启发一定程度由C.

1

一般来说,foo x= bar意味着。因此foo |= barfoo = foo | bar