运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。
运算符分为以下几种
算数运算符
关系运算符
逻辑运算符
位运算符
算数运算符是对数据进行运算
+(加号) 加法运算
–(减号) 减法运算
*(星号) 乘法运算
/(正斜线) 除法运算
%(百分号) 求余运算
i++ 、i-- 、++i 、--i
斜杠除法要注意结果的数据类型是由/两边的数决定的。
结果的数值和数学中运算的结果不太一样,在二进制除法法后转十进制时会出现偏差导致结果会得到一个十分接近的数。(在除法后若要比较两个数是否相等时可以采用高数中无穷小的概念。)
public class Demo01 { public static void main(String[] args){ double a = 1.000000001; int b = 1; if(Math.abs(a-b)>0.000000000000000000000001){ System.out.println("这两个数相等"); } } }
余数是整除之后留下的,所以商必须是整数。
(当心符号问题)公式:
++i是先加在进行别的运算。
i++是先进行别的运算再自加。
经常在if语句中出现一些混乱(特别是和短路与&&,短路或||)
int a = 20; if(a > 30 && a++ < 60){ System.out.println("i++不会被执行"); }
关系运算符返回的值是true和false
== 等于
!= 不等于
> 大于
>= 大于等于
< 小于
<= 小于等于
对变量进行赋值,a += b ==> a = a + b
= 等赋值
+= 加赋值
-= 减赋值
*= 乘赋值
/= 除赋值
%= 求余赋值
三元运算符表示一个条件语句,res = a > b ? a : b
res = a > b ? a : b等价于
if(a > b){
res = a;
}else{
res = b;
}
逻辑运算符是对true和false进行关系的判断,返回的值是true和false
&& 短路与
|| 短路或
! 非
^ 异或
& 与
| 或
短路或和短路与在判断的过程中,若第一个关系式已经决定了结果,就不会进行第二个关系式的计算。
位运算都是用二进制的补码进行运算的。对每个位进行运算
&
|
~
^
>>
<<
>>>
>>>代表无符号数向左移动x位,高位补零,>>代表有符号数向左移动x位,高位用符号位补。
移位运算符可以等价于乘除2,但是会有数据溢出。