Java中&与&&和|与||运算符
&
与&&
使用&
时,当前面的表达式为假时,程序会继续执行后面的表达式,然后再得出False
的结果
int i = 0;
if (i == 1 & ++i > 0) {
}
System.out.println("i = " + i);
// i = 1
使用&&
时,当前面的表达式为假时,则不会执行后面的表达式,直接得出False
的结果
int i = 0;
if (i == 1 && ++i > 0) {
}
System.out.println("i = " + i);
// i = 0
|
与||
使用|
时,当前面的表达式为真时,程序会继续执行后面的表达式,然后再得出True
的结果
int i = 0;
if (1 == 1 | ++i > 0) {
System.out.println("i = " + i);
}
// i = 1
使用||
时,当前面的表达式为真时,则不会执行后面的表达式,直接得出True
的结果
int i = 0;
if (1 == 1 || ++i > 0) {
System.out.println("i = " + i);
}
// i = 0
使用|
、&
运算实现权限判断
权限名称 | 权限码 |
---|---|
读 | 1 |
查询 | 2 |
写 | 4 |
更新 | 8 |
删除 | 16 |
.. | 2^64 |
// 添加权限
我的权限码 = 读|查询|写|更新;
我的权限码 = 1|2|4|8 = 15;
// 删除写权限
我的权限码 = 我的权限码^(我的权限码&写);
我的权限码 = 15^(15&4) = 11;
// 判断单个权限
return (我的权限码&更新) == 更新;
return (15&8) == 8;
// 判断多个权限
要判断的权限码 = 读|更新|写;
要判断的权限码 = 1|4|8 = 13;
return (我的权限码&要判断的权限码) == 要判断的权限码;
return (15&13) == 13;