一、逻辑运算符
用于连接多个条件(多个关系表达式),最终的结果也是一个boolean值。
二、&&和&
// && 和 & 案列
int age = 50;
if(age > 20 && age < 90) {
System.out.println("ok100");
}
// & 案列
if(age > 20 && age < 90) {
System.out.println("ok20");
}
//区别
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 9
四、|| 与 |
// ||短路或 和 |逻辑或 案列演示
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 9
四、!取反与 ^
public class Logic03 {
public static void main(String[] args) {
int a = 10;
int b = 20;
//!的使用
System.out.println(a > b);
System.out.println(!(a > b));
//当两个条件都为true时,结果为false,否则为true
if (a < b ^ b > a ) {
System.out.println("执行成功");
}
if (a < b ^ b < a) {
System.out.println("执行成功2");
}
}
}
练习一
int x = 5;
int y = 5;
if(x++ == 6 & ++y == 6) {
x = 11;
}
System.out.println("x=" + x + "y=" + y); //x=6 y=6
int x = 5;
int y = 5;
if(x++ == 6 && ++y == 6) {
x = 11;
}
System.out.println("x=" + x + "y=" + y); //x=6 y=5
int x = 5;
int y = 5;
if(x++ == 5 | ++y == 5) {
x = 11;
}
System.out.println("x=" + x + "y=" + y); //x=11 y=6
int x = 5;
int y = 5;
if(x++ == 5 || ++y == 5) {
x = 11;
}
System.out.println("x=" + x + "y=" + y); //x=11 y=5
练习二
boolean x = true;
boolean y = false;
short z = 46;
if((z++ == 46) && (y = true)) z++; //z=48
if((x = false) || (++z == 49)) z++;
System.out.println("z=" + z); //z=50