一、关系运算符(比较运算符)
- 关系运算符的结果都是boolean类型,也就是说,要么是true,要么是false。
- 关系表达式经常用在if结构的条件中或循环结构的条件中。
public class RelationalOperator{
public static void main(String[] args) {
int a = 9;//开发中,不可以使用a,b,c等
int b = 8;
System.out.println(a > b);//T
System.out.println(a >= b);//T
System.out.println(a <= b);//F
System.out.println(a < b);//F
System.out.println(a == b);//F
System.out.println(a != b);//T
boolean flag = a > b;//T
System.out.println("flag = " + flag);//T
}
}
- 细节说明
- 关系运算符的结果都是 boolean 型,也就是要么是 true,要么是 false。
- 关系运算符组成的表达式,我们称为关系表达式。 a > b
- 比较运算符"=="不能误写成"="
二、逻辑运算符
用于连接多个条件(多个关系表达式),最终的结果也是一个 boolean 值。
- 短路与 && , 短路或 ||,取反 !
- 逻辑与 &,逻辑或 |,^ 逻辑异或
说明逻辑运算规则:
- a&b : & 叫逻辑与:规则:当 a 和 b 同时为 true ,则结果为 true, 否则为 false。
- a&&b : && 叫短路与:规则:当 a 和 b 同时为 true ,则结果为 true,否则为 false。
- a|b : | 叫逻辑或,规则:当 a 和 b ,有一个为 true ,则结果为 true,否则为 false。
- a||b : || 叫短路或,规则:当 a 和 b ,有一个为 true ,则结果为 true,否则为 false。
- !a : 叫取反,或者非运算。当 a 为 true, 则结果为 false, 当 a 为 false 是,结果为 true。
- a^b: 叫逻辑异或,当 a 和 b 不同时,则结果为 true, 否则为 false。
- 短路与与逻辑与
- &&短路与:如果第一个条件为 false,则第二个条件不会判断,最终结果为 false,效率高。
- & 逻辑与:不管第一个条件是否为 false,第二个条件都要判断,效率低。
- 开发中, 我们使用的基本是使用短路与&&, 效率高。
/**
* 演示逻辑运算符的使用
*/
public class LogicOperator01{
public static void main(String[] args) {
//&&短路与 和 & 案例演示
int age = 50;
if(age > 20 && age < 90) {
System.out.println("ok100");
}
//&逻辑与使用
if(age > 20 & age < 90) {
System.out.println("ok200");
}
//区别
int a = 4;
int b = 9;
//对于&&短路与而言,如果第一个条件为false ,后面的条件不再判断
//对于&逻辑与而言,如果第一个条件为false ,后面的条件仍然会判断
if(a < 1 & ++b < 50) {
System.out.println("ok300");
}
System.out.println("a=" + a + " b=" + b);// 4 10
}
}
短路或|| 两个条件中只要有一个成立,结果为 true,否则为 false
|逻辑或 只要有一个条件成立,结果为 true,否则为 false
//演示 | 和||的使用
public class LogicOperator02{
public static void main(String[] args) {
//||短路或 和 |逻辑或 案例演示
//|| 规则: 两个条件中只要有一个成立,结果为true,否则为false
//| 规则: 两个条件中只要有一个成立,结果为true,否则为false
int age = 50;
if(age > 20 || age < 30) {
System.out.println("ok100");
}
//&逻辑与使用
if(age > 20 | age < 30) {
System.out.println("ok200");
}
//看看区别
//(1)||短路或:如果第一个条件为true,
//则第二个条件不会判断,最终结果为true,效率高
//(2)| 逻辑或:不管第一个条件是否为true,第二个条件都要判断,效率低
int a = 4;
int b = 9;
if( a > 1 || ++b > 4) { // 可以换成 | 测试
System.out.println("ok300");
}
System.out.println("a=" + a + " b=" + b); //4 10
}
}
-
|| 和 | 使用区别
- ||短路或:如果第一个条件为 true,则第二个条件不会判断,最终结果为 true,效率高
- | 逻辑或:不管第一个条件是否为 true,第二个条件都要判断,效率低
- 开发中,我们基本使用 ||
-
! 非(取反) 如果条件本身成立,结果为 false,否则为 true
-
a^b: 叫逻辑异或,当 a 和 b 不同时,则结果为 true, 否则为 false
//! 和^案例演示
public class InverseOperator{
public static void main(String[] args){
//! 操作是取反 T->F , F -> T
System.out.println(60 > 20); //T
System.out.println(!(60 > 20)); //F
//a^b: 叫逻辑异或,当 a 和 b 不同时,则结果为 true, 否则为 false
boolean b = (10 > 1) ^ ( 3 > 5);
System.out.println("b = " + b);//T
}
}