Java - 使用"|"的解释?

Shu*_*ail 0 java android

我是android和学习java的新手.在最近的指南中,我遇到了将密码字段切换到普通文本字段的方法.

有人可以|在本声明中解释使用吗?

final EditText input = (EditText) findViewById(R.id.etCommands);

if(passTog.isChecked())
{
   input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
}else {
   input.setInputType(InputType.TYPE_CLASS_TEXT);
}
Run Code Online (Sandbox Code Playgroud)

任何有关这方面的帮助将不胜感激.提前致谢.

编辑:

我需要知道这个 Bitwise OR 在这里是如何工作的? 这是完整的代码,以避免变量的模糊:

protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);

    setContentView(R.layout.text);

    Button checkCommand = (Button)findViewById(R.id.bResults);
    final ToggleButton passTog = (ToggleButton) findViewById(R.id.tbPassword);
    final EditText input = (EditText) findViewById(R.id.etCommands);
    TextView display = (TextView) findViewById(R.id.tvResults);

    passTog.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub

            if(passTog.isChecked()){
                input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
            }else {
                input.setInputType(InputType.TYPE_CLASS_TEXT);
            }

        }
    });

}
Run Code Online (Sandbox Code Playgroud)

Dan*_*lan 9

该代码未|if声明中使用.它在一个if非常不同的陈述中使用它.在那里使用时,它是按位或操作. 编辑: @RohitJain在他的评论中提供了比我更好的链接:http://en.wikipedia.org/wiki/Bitwise_operation#OR


如果它在if如此声明中使用:

if (foo() | bar())
Run Code Online (Sandbox Code Playgroud)

这意味着"不要短路".如果foo()返回"true",它仍将评估bar().如果你使用||foo()返回"true",它将不会评估,bar()因为它知道if语句的结果将是"真",无论发生什么.


对于您的具体问题,您可以在InputType此处查看可能的值.

InputType.TYPE_CLASS_TEXT = Constant Value: 1 (0x00000001)
InputType.TYPE_TEXT_VARIATION_PASSWORD = Constant Value: 128 (0x00000080)
Run Code Online (Sandbox Code Playgroud)

使用这个工具,我已经计算了按位的结果或将是:129.要了解如何获得该值,请阅读上面的维基百科文章.