位运算符: 区别逻辑运算符
举例:
System.out.println(5 & 9); //将输出1
5—0000 0101(省略前面24个0) 9 ——-0000 1001(省略前面24个0)
0000 0101
& 0000 1001
——————
0000 0001=1
———————————————————————————————————————————————————————————————————————————
System.out.println(5 | 9); //将输出13
0000 0101
| 0000 1001
————————
0000 1101=13
————————————————————————————————————————————————————————————————————————————
比较运算符:
只支持左右两边是数值
= 只支持左右两边是数值
< 只支持左右两边是数值
<= 只支持左右两边是数值
== 如果进行比较的两个操作数都是数值类型,即使他们的数据类型不同,只要他们的值相等,也都将返回true.
例如 97=‘a’将返回true 5.0=5也将返回true
!=
逻辑运算符:
&& 与 :前后两个操作数都是true才返回true,否则返回false (当前面为false时,不去计算后一个直接返回false)
& 不短路与:作用与&&相同,但不会短路(即使前面为false,也要继续计算后一个)
|| 或:只要两个操作数一个为true,就返回true,否则返回false
| 不短路或:作用与 || 相同,只是不短路。
! 非
^ 异或:当两个操作数不同时才返回true,两个操作数相同返回false。
————————————————————————————————————————————————————————————————————
逻辑运算符举例***********************
//直接对false求非运算,将返回true
System.out.println(!false);
//5>3返回true,‘6’转换为整数为54,’6’>10返回true,求与后返回true。
System.out.println(5 >3 && ‘6’ >10);
//4>=5返回false ‘c’>’a’ 返回true,求或之后返回true
System.out.println(4>=5 || ‘c’ >’a’);
//4>=5返回false ‘c’>’a’ 返回true,两个不同的操作数求异或返回true
System.out.println(4>=5 ^ ‘c’ >’a’);
——————————————————————————————————————————————————————————
| 和 || 的区别:
int a =5;
int b=10;
if(a>4 | b++ >10){
System.out.println(“a的值是:”+a+”,b的值是:”+b);
}
//输出a为5,b为11。说明b++得到了计算。
int a =5;
int b=10;
if(a>4 | | b++ >10){
System.out.println(“a的值是:”+a+”,b的值是:”+b);
}
//输出a为 5,b为10。b++没有得到计算,也就是短路了