&& vs & 和 || vs | 的区别
&& 和 || 做的是逻辑运算(具有短路功能)
& 和 | 可做位运算和逻辑运算(没有短路功能)
案例 && 与 &
public static void main(String[] args) {
//短路与&& vs 非短路与&
int a =10;
int b =20;
int c =30;
//boolean flag = a>b && ++b>c;//左边为假,右边短路了
//System.out.println(flag);//false
//System.out.println(b);//20
boolean flag = a>b & ++b>c;//右边不短路
System.out.println(flag);//false
System.out.println(b);//21
}
案例 || 与 |
public static void main(String[] args) {
//短路或|| vs 非短路|
int a =10;
int b =20;
int c =30;
//boolean flag = a<b||++b>c;//左边为真,右边短路了
//System.out.println(flag);//true
//System.out.println(b);//20
boolean flag = a<b|++b>c;//右边不短路
System.out.println(flag);//true
System.out.println(b);//21
}
三目运算符
三目条件运算符的语法为:
表达式1 ? 表达式2 : 表达式3
举例如下:
int a=3, b=6;
int x = a>b? a:b;
那么计算结果就是x=6。
在三目条件运算中,表达式1和表达式2的值可以是任意一种基本数据类型。
例子
public static void main(String[] args) {
// 三目条件运算符
int a=10;
int b=20;
boolean flag = a<b?true:false; // ture
char c = a<b?'真':'假'; //真
String ret = a<b?"正确":"错误"; //正确
int x = a<b?1:0; //1
double y = a<b?1.0:2.0; //1.0}