逻辑运算符
逻辑运算符只对布尔型操作数进行运算,并返回一个布尔类型数据(真true或假false)。
运算符 | 含义 | 解释 |
&& | 与(AND) | 两个操作数皆为真,结果才为真 |
& | ||
|| | 或(OR) | 两个数只要有一个为真,运算结果才为真 |
| | ||
! | 非(NOT) | 返回与操作数相反的布尔值 |
举个例子:
1>0&&3>0;//结果为true
1>0||3>8;//结果为true
!(1>0);//结果为false
短路逻辑运算符的使用
public class Short {
public static void main(String[] args) {
int i = 5;
boolean flag = (i<3)&&(i<4);//&&短路,i<4系统不做运算
System.out.println(flag);
flag = (i>4)||(i>3);//||短路,i>3系统不做运算
System.out.println(flag);
}
}
程序运行结果:
程序中,第3行,由于i=5,所以(i<3)为false,对于&&逻辑运算符,其操作数之一为false,其返回值必然为false,故再确定其左边的操作数为false,对于后一个运算操作数(i<4)无需计算,也就是&&短路。
类似的,对于“||”运算符,由于i=5,所以(i>4)为true,对于||逻辑运算符,其操作数之一为true,整体返回值必然为true,故再确定其左边的操作数为true,对于后一个运算操作数(i>3)无需计算,也就是“||”短路。
位运算符:
位运算符 | 含义 |
& | 按位与 |
| | 按位或 |
^ | 按位异或 |
~ | 按位取反 |
<< | 左位移 |
>> | 右位移 |
>>> | 无符号右位移 |
截张图来理解
按位与和按位或运算:
public class 按位与和或 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("x=");
int x = s.nextInt();
System.out.println("y=");
int y = s.nextInt();
System.out.println("x与y的结果为:");
System.out.println(x&y);
System.out.println("x或y的结果为:");
System.out.println(x|y);
}
}
输出结果为:
代码解析:
第10行,实现与操作,相“与”的两位,如果全部为1结果才是1,有一个为0结果就是0。
13的二进制: 0000000 0000000 0000000 0000110
17的二进制: 00000000 00000000 00000000 00000111
“与”的结果: 00000000 00000000 00000000 00000101
所以输出的结果为5。
第12行,实现或操作,位“或”的两位,如果全为0才是0,有一个为1结果就是1。
13的二进制: 00000000 00000000 00000000 00001101
7的二进制: 00000000 00000000 00000000 00000111
“或”的结果: 00000000 0000000 0000000 00001111所以输出的结果为15。