0

我正在爲Android設計自定義鍵盤。我使用了一個SoftKeyboard示例項目。在LatinKeyboard.java類有一個switch語句像波紋管:使用「&」號瞭解Switch語句

switch (options & (EditorInfo.IME_MASK_ACTION | EditorInfo.IME_FLAG_NO_ENTER_ACTION)) 
{ 
    //Cases  
} 

我試圖理解這個switch語句。我搜索了switch語句文檔,但找不到「&」登錄開關。我也在其他地方搜索解決方案,但目前還沒有解決方案。

回答

3

這裏&bitwise operator它執行所提供的值的AND操作,而|是一個按位或運算符對值進行OR運算。

  • &按位AND
  • |按位OR

爲鏈接

int a = 60; /* 60 = 0011 1100 */ /*Binary*/ 
int b = 13; /* 13 = 0000 1101 */ 
int c = 0; 

c = a & b;  /* 12 = 0000 1100 */ 

c = a | b;  /* 61 = 0011 1101 */ 
+1

+1例如:) – TheLostMind 2014-09-18 17:42:37

+1

感謝您的迅速反應解釋。現在我明白了。但我如何才能認識switch語句的結果? – Hamid 2014-09-18 17:49:23

+0

那麼,完全依賴於'options',因爲我認爲其他兩個變量是常量。 – 2014-09-18 18:11:19

3

&switch聲明無關;它只是Java bitwise AND operator。它對(恆定的)int-表達式(EditorInfo.IME_MASK_ACTION | EditorInfo.IME_FLAG_NO_ENTER_ACTION)執行當前值options的逐位「和」。 (該表達式中的|是按位OR運算符。)結果爲int值,然後由switch使用該值。這與寫作是一樣的:

int value = options & (EditorInfo.IME_MASK_ACTION | EditorInfo.IME_FLAG_NO_ENTER_ACTION); 
switch (value) 
{ 
    //Cases  
} 

除了你避免需要一個變量。