0

我正在为 Android 设计一个自定义键盘。我使用了一个示例 SoftKeyboard 项目。在LatinKeyboard.java类中有一个 switch 语句,如下所示:

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

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

4

2 回答 2

3

与声明&无关switch;它只是Java 按位 AND 运算符。它options使用 (constant) int-valued expression对 的当前值进行按位“与” (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     
}

除非您避免需要变量。

于 2014-09-18T17:35:05.147 回答
3

&是对提供的值执行 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 */
于 2014-09-18T17:35:12.260 回答