2013-03-31 38 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