文章目录
Java-运算符
1. 算数运算符
1.1 分类
加+,减-,乘*,除/,取余%
++:自身+1,等同于i=i+1;
--同上
注意:
i++和++i的区别:
i++:先赋值, 后+1
++i:先+1, 后赋值
1.2 优先级:单目>双目>三目
单目:只有一个操作数,比如 ++ 和 - -
双目:有两个操作数,比如1 + 2
注意:
运算时,结果的类型是运算中的最高精度的数据类型
千万不要使用小数比较相等
2. 关系运算符
2.1 分类
大于 > 小于 < 等于 == 不等于 != 大于等于 >= 小于等于 <=
注意:
关系运算符返回值是Boolean类型
== 比较基本数据类型时是比较值的大小,如果比较引用数据类型那就比较内存地址
== 是比较相等, =是赋值
3. 位运算符
3.1 分类
位与 & : 两边都属true结果才是true
位或 | : 一个是true结果就是true
位非 ! : 取反
位异或 ^ : 两边不一样结果就是true
按位非 ~: 0 的二进制是 : 0000 0000 , ~0 之后, 1111 111, 这是补码,补码-1 得到反码 1111 1110 , 原码 1000 0001 就是-1
3.2 补充与说明
3.2.1 右移运算符 >>
(考虑符号位,再怎么移动,符号位不受影响),8 >> 2 = 2
操作过程 : 转换为二进制 : 0000 1100 , 右移两位,向最左边+两个0(符号位之 后),最右边,删除两位(正数 左边补0 , 负数 左边补1 , 右移几位 就等于 x / 2的n次方)
3.2.2 左移运算符 <<
同上取反,除变乘,右移变左移,左移变右移
3.2.3 右移运算符 >>>
(不看符号位),只补0,不补1,正数不受影响,和 >> 一样,负数会全变为正数 -1 >>> 1 : 001111 11
3.2.4 逻辑比较
&& : 且,短路与 , 和 & 一样,如果第一个是false,第二个就不执行了, 但是 & 第二个也会执行
|| : 或,短路或 , 如果第一个是true,第二个就不执行了, 但是 | 第二个会执行
& : 两边也可以是数字,如果是数字 就是要进行 与运算
|| : 或,短路或 , 如果第一个是true,第二个就不执行了, 但是 | 第二个会执行
& : 两边也可以是数字,如果是数字 就是要进行 与运算
8 & 9 : 把8和9转换为二进制,然后每位比较,如果都是1 就取1,否则就是0, 结果不会超过两个数中最小的一个