逻辑运算符
逻辑运算符
逻辑运算符只能用于 boolean 类型的数据运算,判断 boolean 数据之间的逻辑关系,与、或、非。
&(与)、|(或)、!(非)、&&(短路与)、||(短路或)
参与逻辑运算符的变量都是 boolean 的
变量1 & 变量2:只有当变量 1 和变量 2 都为 true,结果为 true,否则为 false。
变量1 | 变量2:变量 1 和变量 2 只要有一个为 true,结果为 true,否则为 false。
!变量1:若变量 1 为 true,结果为 false,若变量 1 为 false,结果为 true。
变量1 && 变量2:只有当变量 1 和变量 2 都为 true,结果为 true,否则为 false。
变量1 || 变量2:变量 1 和变量 2 只要有一个为 true,结果为 true,否则为 false。
public class Demo03 {
public static void main(String[] args) {
int num1 = 10;
int num2 = 11;
// 这个两个都是false,++在后面,是先赋值比较后+1,即num1=10 和num2=11进行比较,为false
// 执行++的操作,num1+1=11
// ++num1在前,先+1,num1+1=12,在和num2=11比较,所以是false
System.out.println((num1++==num2)&(++num1==num2)); // false
System.out.println(num1); // ++经历了2次所以12
}
}
- &和&&,一个与和短路与的区别,一个&会执行全部,而&&会短路,只执行一边
public class Demo03 {
public static void main(String[] args) {
int num1 = 10;
int num2 = 11;
// 这个两个都是false,++在后面,是先赋值比较后+1,即num1=10 和num2=11进行比较,为false
// 执行++的操作,num1+1=11
System.out.println((num1++==num2)&&(++num1==num2));// 使用短路与判断false,一个false全false
// &和&&,一个与和短路与的区别,一个&会执行全部,而&&会短路,只执行一边
System.out.println(num1); // ++经历了1次所以11
}
}
public class Demo02 {
public static void main(String[] args) {
int num1 = 10;
int num2 = 11;
// ++前,先+1, num1+1=11, 11和11比较,true,一个或,所以还是true,但是后面的还是要执行
System.out.println((++num1==num2)|(num1++==num2)); //true
System.out.println(num1);//11+1=12
}
}
| 或后执行后面的,短路||或不会执行后面的
public class Demo02 {
public static void main(String[] args) {
int num1 = 10;
int num2 = 11;
// ++前,先+1, num1=11, 11和11比较,true,短路或,后面的不看,不执行
System.out.println((++num1==num2)||(num1++==num2)); //true
System.out.println(num1);//11
}
}
- 短路与和短路或效率会更高,如果false的话,不用执行后面的