运算符及其分类
java中的运算符分为算术运算符、赋值运算符、逻辑运算符、比较运算符、位运算符、位移运算符、三元运算符
算术运算符
用于基本运算操作
运算符 | 说明 |
---|---|
+ | 加法(a + b) |
- | 减法(a - b) |
* | 乘法(a * b) |
/ | 除法(a / b) |
% | 取余数(a % b) |
- - | 自减( a-- 、–a)a-1再赋值给a |
++ | 自增(a++、++a)a+1再赋值给a |
自增跟自减根据位置判断是否优先输出
//取余数
int i = 57;
int j = 6;
System.out.println(i%j);// 57÷6=9......3 输出结果3
//下方为自增显示,自减同理
int a =5;
System.out.println(a++);//输出结果5
System.out.println(++a);//输出结果7
赋值运算符
运算符 | 说明 |
---|---|
= | 赋值(a=5 将右边的值给予左边) |
+= | 加赋值 |
-= | 减赋值 |
/= | 除赋值 |
*= | 乘赋值 |
int a =58;
int b =4;
a+=b;//加赋值 由58加4再赋值给啊 下方同理
System.out.println(a);//输出赋值a的结果
a-=b;
System.out.println(a);
a/=b;
System.out.println(a);
a%=b;
System.out.println(a);
输出结果
62
58
14
2
逻辑运算符
运算符 | 说明(a、b为判断表达式) |
---|---|
&& | 并且( a&&b 左边与右边同时为true时,计算结果为 true) |
|| | 或者( a||b 左边与右边同时为false时,计算结果为false,否则为true) |
! | 否(非)( !a 当a为true时,计算结果为false) |
| | 或( a&b 左边与右边同时为true时,计算结果为 true) |
& | 与(a|b 左边与右边同时为false时,计算结果为false,否则为true) |
&&和&的区别为:&的左边表达式为false时,不会判断右边表达式。&&不管左边是否为false都会判断右边表达式
|| 和 | 区别同上
逻辑运算符的优先级为:!运算级别最高,&& 运算高于 || 运算。!运算符的优先级高于算术运算符,而 && 和 || 运算则低于关系运算符。结合方向是:!具有右结合性(只会判断右边),&和 | 具有左结合性(左边开始判断,其次右边,从左到右)
关系运算符
运算符 | 说明 |
---|---|
< | 小于 |
> | 大于 |
== | 等于 |
>= | 大于等于 |
<= | 小于等于 |
!= | 不等于 |
对于存在‘<’、‘>’的关系运算符,仅限于数值的判断,==和!=对于数值类型判断值是否相等,对于引用类型判断引用地址是否相等
位运算符
位运算符都是基于二进制数据进行补数运算,如果没有特殊说明,Java中的数据类型默认是int,int数据类型的长度是8位,一位是四个字节,就是32字节,32bit
运算符 | 说明 |
---|---|
& | 按位进行与运算 |
| | 按位进行或运算 |
^ | 按位进行异或运算 |
~ | 按位进行取反运算 |
>> | 右移位运算符 |
<< | 左移位运算符 |
>>> | 同右移运算符,左补0,无关正负 |
&当两边数的二进制位数在同一位置的数同时为1时,显示结果的二进制的当前位置的数才为1;
| 当两边数的二进制位数在同一位置的数同时为0时,显示结果的二进制的当前位置的数才为0;
^ 当两边数的二进制位数在同一位置的数相同时,显示结果的二进制的当前位置的数为0;
~ 对一个数进行操作,默认32位进行操作,当前数二进制的当前位数的相反数,最高位为1时表示负数,负数的补数是其绝对值的二进制取反,末尾再加1
>> (a>>b)将a的二进制向右移动b位,正数左补0,负数左补1,右边丢弃
<< (a<<b)将a的二进制向左移动b位,左边丢弃,等同于 a乘2的b次方
>>>(a>>>b)将a的二进制向右移动b位,不管正负,左补0
三元运算符
语法: a ? b :c
a为判断表达式,当a为true时 输出结果为b,反之为c
运算符优先级
优先级 | 运算符 | 结合性 |
---|---|---|
1 | ()、[]、{} | 从左向右 |
2 | !、+、-、~、++、– | 从右向左 |
3 | *、/、% | 从左向右 |
4 | +、- | 从左向右 |
5 | «、»、>>> | 从左向右 |
6 | <、<=、>、>= | 从左向右 |
7 | ==、!= | 从左向右 |
8 | & | 从左向右 |
9 | ^ | 从左向右 |
10 | | | 从左向右 |
11 | && | 从左向右 |
12 | || | 从左向右 |
13 | ? : | 从右向左 |
14 | =、+=、-=、*=、/=、&=、|=、^=、~=、«=、»=、>>>= | 从右向左 |