我正在为Android设计自定义键盘。我使用了一个示例SoftKeyboard项目。在LatinKeyboard.java类中有一个像下面这样的开关语句:
switch (options & (EditorInfo.IME_MASK_ACTION | EditorInfo.IME_FLAG_NO_ENTER_ACTION))
{
//Cases
}
我正在尝试理解这个switch语句。我搜索了switch语句文档,但是我找不到“&”登录开关。我也在其他地方寻找解决方案但到目前为止还没有解决方案。
答案 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 */