逻辑运算符
【介绍】
用于连接多个条件(多个关系表达式),最终的结果也是一个 boolean值。
【分类】
- 短路与 && , 短路或 ||,取反!;
- 逻辑与 &,逻辑或 |,逻辑异或 ^ ;
&& 和 & 基本规则
名称 | 语法 | 特点 | 使用区别 |
短路与&& | 条件 1&&条件 2 | 两个条件都为 true,结果为 true,否则 false | 如果第一个条件为 false,则第二个条件不会判断,最终结果为 false,效率高 |
逻辑与& | 条件 1&条件 2 | 两个条件都为 true,结果为 true,否则 false | 不管第一个条件是否为 false,第二个条件都要判断,效率低 |
|| 和 | 使用区别
名称 | 语法 | 特点 | 使用区别 |
||短路或 | 条件 1||条件 2 | 两个条件中,只要有一个成立,结果为 true,否则为 false | 如果第一个条件为 true,则第二个条件不会判断,最终结果为 true,效率高 |
| 逻辑或 | 条件 1|条件 2 | 两个条件中,只要有一个条件成立,结果为 true,否则为 false | 不管第一个条件是否为 true,第二个条件都要判断,效率低 |
! 取反 和 ^ 逻辑异或
名称 | 语法 | 特点 |
! 非(取反) | !条件 | 如果条件本身成立,结果为 false,否则为 true |
^ 逻辑异或 | 条件一 ^ 条件二 | 当条件一和条件二不同时,则结果为 true, 否则为 false |
三元运算符
- 语法
条件表达式 ? 表达式 1:表达式 2;
- 运算规则
- 如果条件表达式为 true,运算后的结果是表达式 1;
- 如果条件表达式为 false,运算后的结果是表达式 2;
【口诀:一真二假】(PS:这个是自己学的时候瞎想的,觉得拗口可以自己总结一个)
【代码演示】
int a = 55;
int b = 88;
int result = a > b ? a++ : b--;
System.out.println("result=" + result);
System.out.println("a=" + a);
System.out.println("b=" + b);
// 解读
// 1. a > b 为 false
// 2. 返回 b--, 先返回 b 的值,然后在 b-1
// 3. 返回的结果是 88
【细节分析】
- 表达式 1 和表达式 2 要为可以赋给接收变量的类型(或可以自动转换);
- 三元运算符可以转成 if--else 语句; 【例:int res = a > b ? a++ : --b ; if ( a > b) res = a++ ; else res = --b;】
位运算符
- java 中有 7 个位运算:&,|, ^ ,~,>>,<< 和 >>>;
- 算术右移 >>:低位溢出,符号位不变,并用符号位补溢出的高位;
- 算术左移 << 逻辑右移也叫无符号右移,运算规则是: 低位溢出,高位补 0;
- >>> 逻辑右移也叫无符号右移,运算规则是: 低位溢出,高位补 0;
- 特别说明:没有 <<< 符号 ;