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. 位运算符

Char
506 声望33 粉丝

hello world