3.4 Java 运算符

运算符

运算符 描述
赋值运算符 = 赋值
一元运算符 + 正号
- 负号
NOT,否
算术运算符 + 加法
- 减法
* 乘法
/ 除法
% 取模(取余数)
关系运算符 > 大于
< 小于
>= 大于等于
<= 小于等于
== 等于
!= 不等于
递增与递减算符 ++ 自增,变量值加1
自减,变量值减1
逻辑运算符 & AND,与
&& 短路与
| OR,或
|| 短路或
括号运算符 ( ) 提高括号中表达式的优先级
位运算符 & 按位与
| 按位或
^ 异或(相同为0,不同为1)
~ 取反
<< 左位移
>> 右位移
>>> 无符号右位移
三元操作符 ?: 条件判断
字符连接操作符 + 连接字符串,并生成新字符串

(1)关系运算符都会结合if语句使用,在if语句中可以接收布尔类型的数据进行判断。

(2)递增与递减运算符写在后面表示先使用变量之后再进行自增或自减的操作,如果是写在前面,则先进行自增或自减的操作。

(3)逻辑运算符不管是短路还是非短路,其基本的操作结果是一样的。

(4)“&”或“&&”使用与操作的时候,要求前后几个表达式的内容都是true最终的结果才是true,如果有一个是false,则最终的结果就是false。

(5)“|”或“||”使用与操作的时候,要求前后几个表达式只要有一个true,则最终的结果就是true,如果全部是false,则最终的结果才是false。

(6)关于“&&”与“&”、“|”与“||”的说明:
a、 对于“&”(与)来说,要求所有的条件都判断,而如果使用“&&”(短路与)如果第一个条件为false,则后面的条件将不再判断。
b、 对于“|”(或)来说,要求所有的条件都判断,而如果使用“||”(短路或)如果第一个条件为true,则后面的条件将不再判断。

(7)位运算结果表:

二进制数 二进制数 与操作(&) 或操作(|) 异或操作(^)
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0

(8)左移“<<”、右移“>>”和无符号右移“>>>”:
a、 左移操“<<”是将运算数的二进制码整体左移指定位数,左移之后的空位使用0来填充。左移一位相当于原来的数乘二,大于32位的话高出的位就不要了,如果移动的位数大于32的话java会自动把这个位数变为这个数对32求余的值。
b、 右移操作“>>”是将运算数的二进制码整体右移,右移之后空出来的位置以符号位填充。如果是正数使用“0”填充,如果是负数使用“1”填充。
c、 无符号右移“>>>”使用0填充高位。
d、 对位移运算符右侧的参数需要进行摸32的运算(除非左边的操作数是long类型,在这种情况下需对右侧操作数模64)。

(9)三元操作符“?:”
变量 = 条件判断 ? 表达式1 : 表达式2
当条件成立时执行表达式1,否则执行表达式2。

数学函数与常量

(1)计算一个数值的平方根,可以使用sqrt方法,sqrt方法是一种静态方法。

1
2
3
double x = 4 ;
double y = Math.sqrt( x ) ;
System.out.println( y ) ; // prints 2.0

(2)在Java中,没有幂运算,需要借助Math类的pow方法。

1
double y = Math.pow( x , a ) ;

将y的值设置为x的a 次幂( xa )。pow方法有两个double 类型的参数,其返回结果也为double类型。

(3)三角函数:

1
Math.sin Math.cos Math.tan Math.atan Math.atan2

(4)指数函数和反函数——自然对数

1
Math.exp Math.log

(5)Java 中提供的两个用于表示π和e常量的近似值:

1
Math.PI Math.E

运算符的优先级

优先级 运算符 结合性
1 ( ) 括号运算符 由左至右
1 [ ] 方括号运算符 由左至右
2 ! , + (正号), - (负号) 一元运算符 由右至左
2 ~ 位逻辑运算符 由右至左
2 ++,– 自增与自减运算符 由右至左
3 * , / , % 算术运算符 由左至右
4 + , - 算术运算符 由左至右
5 << , >> 位左移,位右移 由左至右
6 > , >= , < , <= 关系运算符 由左至右
7 == , != 关系运算符 由左至右
8 & (位运算符,AND) 位逻辑运算符 由左至右
9 ^(位运算符) 位逻辑运算符 由左至右
10 | (位运算符,OR) 位逻辑运算符 由左至右
11 && 逻辑运算符 由左至右
12 || 逻辑运算符 由左至右
13 ?: 三目运算符 由右至左
14 = 赋值运算符 由右至左

简洁表达式的范例

运算符 范例 a b 说明 a b
+= a+=b 12 3 a = a + b 15 3
-= a-=b 12 3 a = a - b 9 3
*= a*=b 12 3 a = a * b 36 3
/= a/=b 12 3 a = a / b 4 3
%= a%=b 12 3 a = a % b 0 3
b++ a*=b++ 12 3 a = a * b , b++ 36 4
++b a*=++b 12 3 b++ , a = a * b 4 4
b– a*=b– 12 3 a = a * b , b– 36 2
–b a*=–b 12 3 –b , a = a * b 24 2
坚持原创技术分享,您的支持将鼓励我继续创作!