目录
逻辑运算符:
上节说了,>、>=、<、<=、==、!=,这节就讲“|”逻辑或,“||”短路或、“&“逻辑与、以及“&&”短路与,他们输出的都是boolean类型的数据。
首先:逻辑或“|”与短路或“||”,目前比较常用的是“||”短路或。
逻辑与和短路与的区别:
逻辑或“|”,他是两边都需要计算,而不是,左边是逻辑真后,右边不看,把两边的逻辑值进行比较,得出最后结果。
短路或“||”,如果短路或“||”左边为真,则右边不参与运算,结果为真,如果为假,两边都需要参与运算。
逻辑与和短路与同上。
逻辑或“|”
public class Daytext1 {
public static void main(String[] args) {
// 逻辑或“|”
int a=5;
int b=6;
// a++ > b:先判断,a在加一,这就是++放在后面的运算条件
// ++a < b:++放在前面,就是先加,在比较
boolean tf = a++ >b | ++a <b;
System.out.println("逻辑或(|):"+tf);
System.out.println(a);
}
}
短路或“||”
public class Daytext1 {
public static void main(String[] args) {
int a=5;
int b=6;
// a++ > b:先判断,a在加一,这就是++放在后面的运算条件
// ++a < b:++放在前面,就是先加,在比较
// 短路或“||”,可以看到如果第一个条件成立,那么第二个条件就不会参与运算
boolean tf = ++a >=b || a++ != b;
System.out.println("短路或(||):"+tf);
System.out.println(a); //a=6 ,而不是a=7,所以说后面没有参与运算
}
}
逻辑与“&”
public class Daytext1 {
public static void main(String[] args) {
int a=5;
int b=6;
// a++ > b:先判断,a在加一,这就是++放在后面的运算条件
// ++a < b:++放在前面,就是先加,在比较
// 逻辑与“&”,两边都为真时显示,显示真,否则,显示假
boolean tf = ++a >=b & a++ != b;//a++ >= b 为真,a++ != b 为假,因为 a=6,要先比较,在自增
System.out.println("逻辑与(&):"+tf);
System.out.println(a);
}
}
短路与“&&”
public class Daytext1 {
public static void main(String[] args) {
int a=5;
int b=6;
// a++ > b:先判断,a在加一,这就是++放在后面的运算条件
// ++a < b:++放在前面,就是先加,在比较
// 逻辑与“&&”,两边都为真时显示,显示真,否则,显示假
boolean tf = ++a !=b && a++ >= b;//a++ != b 为假,a++ >= b 为真
// 短路与“&&”,可以看到如果第一个条件成立,那么第二个条件就不会参与运算
System.out.println("逻辑与(&&):"+tf);
System.out.println(a);
}
}
三元运算符:
表达式?表达式1:表达式2
a>b ?a:b
如果a>b是真,就选择a,反之选择b。
//三元运算符
public class DayText2 {
public static void main(String[] args) {
int a=5;
int b=6;
// 求a,b的最大值
// 表达式?表达式1:表达式2,表达式成立,选择表达式1,不成立选择表达式2
int c=a>b ? a:b;
System.out.println("最大值:"+c);
}
}
嵌套:
三个数比较大小:a,b,c
a>b?(a>c?a:c):(b>c?b:c)
public class DayText3 {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 30;
/*
* 三个数比较大小:
* 思路:如果a>b,那么拿a和c比较
* 表达式?表达式1:表达式2
* */
// 比较之前把(a>c?a:c)看作一个整体和(b>c?b:c)看作一整体,如果a>b,再把表达式1里面的进行比较
// 否则把表达式里面的进行比较。
int max = a>b?(a>c?a:c):(b>c?b:c);
System.out.println("最大值:"+max);
/*求最小值,如果a>b是真,则b比较小,那么就把b的值与c比较,比较除最小值
* 如果a>b是假,则a比较小,就把a的值与c比较,得出最小值
* 例如:两个数的最小值:min=a>b?b:a
* 如果a>b是真 那么小的值就是b,所以,a>b是真
* 如果a>b是假 那么小的值就是a,所以,a<b;
* */
int min = a>b?(b>c?c:b):(a>c?c:a);
System.out.println("最小值:"+min);
}
}
到这里就结束了,可能对于初学者,还是比较绕的,希望大家多加练习。