用“&”理解Switch语句标志

时间:2014-09-18 17:33:50

标签: java android switch-statement android-softkeyboard custom-keyboard

我正在为Android设计自定义键盘。我使用了一个示例SoftKeyboard项目。在LatinKeyboard.java类中有一个像下面这样的开关语句:

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

我正在尝试理解这个switch语句。我搜索了switch语句文档,但是我找不到“&”登录开关。我也在其他地方寻找解决方案但到目前为止还没有解决方案。

2 个答案:

答案 0 :(得分:3)

&switch声明无关;它只是Java bitwise AND operator。它做了一点点"和" options的当前值与(常量)int - 值表达式(EditorInfo.IME_MASK_ACTION | EditorInfo.IME_FLAG_NO_ENTER_ACTION)的关系。 (该表达式中的|是按位OR运算符。)结果是int值,然后由switch使用。这和写作一样:

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

除了你不需要变量。

答案 1 :(得分:3)

这里&bitwise operator,它对提供的值执行AND运算,而|是按位OR运算符,它对值执行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 */