一、逻辑运算符与或异或非双与双或
&逻辑与:有false则false。
|逻辑或:有true则true。
^逻辑异或:相同为false,不同为true。
!逻辑非:非false则true,非true则false。
&&和&的区别?
* a:最终结果一样。
* b:&&具有短路效果。左边是false,右边不执行。
* &是无论左边是false还是true,右边都会执行
||和|的区别?
* a:最终结果一样。
* b:||具有短路效果。左边是true,右边不执行。
* |是无论左边是false还是true,右边都会执行
二、位运算符
* &,|,^,~ 的用法,针对的是二进制
* &:有0则0
* |:有1则1
* ^:相同则0,不同则1
* ~:按位取反
举例:6&3 = 110 &011 = 010 = 2
其中~比较特殊,比如~6 = -7;因为6是int值,32位二进制,先按位取反,得到结果的补码,然后-1得反码,再除了符号位不变取反,得结果的原码,转为十进制即-7。
6的二进制 00000000 00000000 00000000 00000110
按位取反 11111111 11111111 11111111 11111001
-1 11111111 11111111 11111111 11111000补码
除符号位取反10000000 00000000 00000000 00000111 = -7
>>,>>>,<<的用法:
* <<:左移 左边最高位丢弃移动位数,右边补齐0
* >>:右移 最高位是0,左边补齐0;最高为是1,左边补齐1
* >>>:无符号右移 无论最高位是0还是1,左边补齐0
* 整数向左移动几位,乘以2的几次幂;向右移动几位除以2的几次幂
三元运算符的格式
(关系表达式) ? 表达式1 : 表达式2;前面是一个判断,后面两个是根据判断的结果。
switch语句小知识点:
* a:case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
* b:default可以省略吗?
* 可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。
* 特殊情况:
* case就可以把值固定。
* A,B,C,D
* c:break可以省略吗?
* 最后一个可以省略,其他最好不要省略
* 会出现一个现象:case穿透。
* 最终我们建议不要省略
* d:default一定要在最后吗?
* 不是,可以在任意位置。但是建议在最后。
* e:switch语句的结束条件
* a:遇到break就结束了
* b:执行到switch的右大括号就结束了