java中的运算符按功能划分主要分7类。
-
算术运算符
+, -, *, /, ++, --, %
-
关系运算符
<, <=, >, >=, ==, !=
-
布尔逻辑运算符
&&, &, ||, |, !, ^
-
位运算符
&, |, ~, ^, >>, >>>, <<
-
赋值运算符
=, +=, -=, *=, /=, &=, |=, %=, <<=, >>=, >>>=
-
条件运算符
?:
-
其它运算符
(类型), ., [], (), instanceof, new
下面罗列一下一些运算符中需要注意的点。
1. 整数除法
整数除法的结果也是一个整数。
例如:
int i = 2/4*100; //i的计算结果为0
2. 自增自减运算符
自增自减运算符载操作数的前面或者后面是不同的。
例如
int n = 100;
int x = n++; // ++放在n后,即先将n的值附给x,然后让n自增1。
int y = ++100; // ++放在n前面,先让n自增1,然后再赋给y。
自减符号类似。
3. 算术运算符的优先级
++,--
> *,/,%
> +,-
4.浮点数比较
在java中,一般不建议直接比较两个浮点数是否相等。根据IEEE 754标准,float和double数据类型都无法精确表示你想要的某一个值,即计算机在表示的时候会有一定的误差。
一个有理数,除非分母是足够小的2的整数次幂,否则它就不能被精确表示。
因此需要慎重对浮点数做直接的等于或者不等于操作。
常用的判断两个浮点数是否相等的方法如下:
(d1>d2-epsilon) && (d1<d2+epsilon)
epsilon就是浮点数的容差,其取值多少与实际的应用嘻嘻相关。一般在财务与网络应用中,epsilon一般取1e-5。在计算机辅助设计系统中通常取值1e-8.
5. 布尔值运算符短路规则
&&
和||
具有短路规则。即第一个操作数已经成立,则不再计算后一个操作数。&&
是如果前一个操作数已经为false,则后一个操作数也不再计算判断直接判定为false。||
是如果前一个操作数已经是true,则后一个操作数也不在计算判断直接判定为true。
6. 赋值类运算符
赋值类运算符包括最基础的`=`。还有与二元运算符相结合的赋值运算符。
与二元运算符相结合的赋值运算符有:
+=, -=, *=, /=, &=, |=, %=, <<=, >>=, >>>=
其运算即为先两者进行二元操作再赋值给前者。
7. 位运算符
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。