短路运算符:
&:与,&的前后都需要执行
&&:短路与,&&的前面为false则&&后面的就直接不执行
|:或,|的前后都需要执行
||:短路或,||前面如果是true则||后面的就直接不执行
1 短路逻辑运算符有哪些
&& ||
2 短路逻辑运算符的用法
非短路: (a>b) & (d<c) 不管结果两边都要去判断
短路: (a>b) && (d<c) 如果a>b为假 就不去判断d<c
就好比你妈说:等你结了婚给我生个孙子就给你10w 想拿到这10w首先要满足两个条件,
如果你没结婚就不用考虑生孙子这件事了吧 当然 未婚先于的除外
非短路: (a>b)|(d<c) 两边都要去判断
短路: (a>b)||(d<c) 如果a>b为真 就不用判断后边 表达式结果就为真。
3 短路逻辑运算符注意点
&和&&
1 运算结果一定相同
2 当符号左边为true时 &和&& 右边都会执行
当符号左边为false时,&右边执行 && 右边不执行
&&遇false则false 才会短路
|和||
1 运算结果相同
2 当符号左边为true时, | 右边执行 ||右边不执行
当符号左边为false时,|和 || 右边都会执行
||遇到true则true 才会短路
三元运算符的注意事项:
1 三元运算符格式以及执行过程是什么
格式:关系表达式?表达式1:表达式2;
执行结果: 关系表达式结果是布尔类型的;
关系表达式为true,运算后的结果是表达式1
关系表达式为false,运算后的结果是表达式2
2 使用三元运算符要注意什么
1.表达式1和2要有明确的计算结果,不能写输出语句
int max = num1 > num2 ? System.out.println(num1) : System.out.println(num);
//大错特错
2.三元运算符的运算结果不能直接摆在那里,要么定义变量接收,要么直接打印输出
num1 > num2 ? num1 : num2;
相当于 num1;//大错特错
可以接收(数据下一步还需要使用)
int num = num1 > num2 ? num1 : num2;
可以直接打印(单纯展示数据)
System.out.println(num1 > num2 ? num1 : num2);
3.表达式1和2 结果要有一个统一的类型
double d = 10 > 5 ? 2 : 1.0;
???=10 > 5 ? "2" : 1.0; //目前还是不允许的
4.三元运算符可以嵌套使用:
int a=10,b=20;
String result=a>b?"a大":"b大";
如果a和b相等嵌套一下
String result=a>b?"a大":(a==b?"相等":"b大");
5.凡是可以使用三元运算符的地方都可以改写为 if-else
如果程序既可以使用三元 又可以使用 if -else 优先选择三元, 原因是:简洁,效率高(三元本身是运算符)