Java中的运算符与C语言大同小异,具体可以对比熟悉。
1.算术运算符
- 基本四则运算符:加减乘除模(+ - * / %)
注意:
都是二元运算符,使用时必须要有左右两个操作数
int / int 结果还是int类型,而且会向下取整
做除法和取模时,右操作数不能为0
% 不仅可以对整形取模,也可以对double类型取模,但是没有意义,一般都是对整形取模的(区别于C语言)
两侧操作数类型不一致时,向类型大的提升
2.增量运算符 += -= *= %=
3. 自增/自减运算符 ++ –
注意前置++和后置++的区别
如果单独使用,两者没有区别。
2. 关系运算符
关系运算符主要有六个: == != < > <= >= ,其计算结果是 true 或者 false
多次判断时,不能连着写,比如:3 < a < 5
3.逻辑运算符
3.1逻辑与 &&
语法规则:表达式1 && 表达式2,左右表达式必须是boolean类型的结果。
3.2逻辑或 ||
语法规则:表达式1 || 表达式2,左右表达式必须是boolean类型的结果。
注意:左右表达式至少有一个位真,则结果为真
3.3 逻辑非 !
语法规则:! 表达式
3.4⭐短路求值
对于 && , 如果左侧表达式值为 false, 则表达式结果一定是 false, 无需计算右侧表达式.
对于 ||, 如果左侧表达式值为 true, 则表达式结果一定是 true, 无需计算右侧表达式.
& 和 | 如果表达式结果为 boolean 时, 也表示逻辑运算. 但与 && || 相比, 它们不支持短路求值.
4.位运算符
位运算符主要有四个: & | ~ ^ ,除 ~ 是一元运算符外,其余都是二元运算符。
(详见C语言)操作符详解
5.移位操作符
移位运算符有三个: << >> >>> (区别于C语言),都是二元运算符,且都是按照二进制比特位来运算的。
无符号右移 >>>: 最右侧位不要了, 最左侧补 0.
注意:
- 左移 1 位, 相当于原数字 * 2. 左移 N 位, 相当于原数字 * 2 的N次方.
- 右移 1 位, 相当于原数字 / 2. 右移 N 位, 相当于原数字 / 2 的N次方.
- 由于计算机计算移位效率高于计算乘除, 当某个代码正好乘除 2 的N次方的时候可以用移位运算代替.
- 移动负数位或者移位位数过大都没有意义.