Ich*_*aki 6 java android operators
我的问题可能是基本的,但我想知道管道运算符如何在Android中的以下上下文中工作:
我们可以在布局中设置多个输入类型:
android:inputType = "textAutoCorrect|textAutoComplete"
Run Code Online (Sandbox Code Playgroud)
我们可以为intent设置多个标志,如下所示:
intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION|Intent.FLAG_ACTIVITY_CLEAR_TOP);
Run Code Online (Sandbox Code Playgroud)
我们还可以设置一些属性如下:
tvHide.setPaintFlags(tvHide.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
Run Code Online (Sandbox Code Playgroud)
我们可以在多个实例中看到Android中的此类示例.
所以我的问题是,|操作符是否像按位OR运算符一样,或者它只是将结果或其他内容连接起来?
如果它的作用类似于按位OR运算符,那么它如何使预期结果正确?有人可以开导我这个吗?
是的,这是一项bitwise inclusive OR操作,主要用于设置标志(文档)。考虑以下标志:
byte flagA = 0b00000001;
byte flagB = 0b00000100;
Run Code Online (Sandbox Code Playgroud)
如果使用|运算符,则将这两个标志组合在一起:
byte flags = flagA | flagB; // = 0b00000101
Run Code Online (Sandbox Code Playgroud)
这使我们可以在少量内存(通常是带有大多数Android标志的Integer)中设置属性或其他状态信息。
注意,一个标志应该只具有“有效”一位,即其值等于2 ^ n。当我们使用bitwise AND运算符检查组合的标志持有者变量时,这就是我们知道设置了哪些标志的方式
if ((flags & flagA) == flagA) {
// Flag A has been set
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
207 次 |
| 最近记录: |