1. 算术运算符
加法 +
减法 -
乘法 *
除法 /
取模 %
注:
double j =0;
j = 0.0/0.0;
System.out.println(j); //结果为NaN,任何NaN都不等于自己
double i = 0;
i = 1.0/0.0
System.out.println(i); //结果为Infinity,表示无穷大
2. 算术运算
自增自减运算符符号
++ , - -
自增自减只能用于变量,优先级高于算术运算符。
++a 先自增再赋值
a++ 先赋值再自增
- - 同理
int a = 0;
a = a++;
System.out.println(a);//a等于0
int b = 0;
b = ++b;
System.out.println(b);//b等于1
可以把整个表达式看成是一个整体。
如果变量名在前面,那么整个表达式的值就是原来值不变。
如果变量名在后面,那么整个表达式的值就是原来的值加1。
3. 赋值运算
赋值运算符符号
= ,+= , -= , *= ,/= ,%=
- 有强制转换功能,直到当前的数据类型装不下为止,否则会一直以二进制的方式进位
- 可以屏蔽提升运算的数据类型
4. 比较运算
比较运算符符号
== , != , > , < , >= , <=
==
1.比较基本类型,是比较的值是否相等
2.比较引用类型,是比较的堆中的地址是否相等
equals()
比较对象中的成员变量是否相等。
注:比较运算的结果是一个布尔类型的值
5. 逻辑运算
逻辑运算符符号
& , | , && , || , ^ , !
! : 非真即假,非假即真
&&:表示并且,有短路功能,逻辑运算效率高,没有位运算功能
&:表示并且,没有短路功能,逻辑运算效率低,有位运算功能
有假即假
||:表示或者,有短路功能,逻辑运算效率高,没有位运算功能
|:表示或者,没有短路功能,逻辑运算效率低,有位运算功能
有真即真
^ : 同假异真 按位与
6. 三目运算
语法:X ? Y : Z
- 若X 为true,输出 Y 的结果值 ( 冒号前面的表达式的值)
- 若X为false,输出 Z 的结果值 ( 冒号后面的表达式的值)
注:可以进行嵌套使用。
int a = 1;
int b = 2;
System.out.println(a > b ? a : b);//输出2
7. 位运算
计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作。
- & 与
两个位都为1时,结果才为1 - | 或
两个位都为0时,结果才为0 - ^ 异或
两个位相同为0,相异为1 - ~ 取反
0变1, 1变0 - <<
左移 各二进位全部左移若干位,高位丢弃,低位补0 - >>
右移 各二进位全部右移若干位,对无符号数,高位补0