1.算术运算符
符号 : + - * / % ++a --a a++ a--
说明:
(1)对于除法运算符,如果两个操作数均是整数,结果也是整数,会舍弃小数部分;如果 两个操 作数中有一个是浮点数,将进行自动类型转换,结果也是浮点数,保留小数部分。
(2)对于取模运算符(取余运算符)/,如果两个操作数均是整数,结果也是整数;如果两 个操作数中有一个是浮点数,结果也是浮点数,保留小数部分。
(3)自增运算符有a++、++a两种使用方式,它们的特点是都相当于a=a+1;不同点a++是 先进行表达式运算再加1,而++a是先加1再进行表达式运算。
运算符 | 运算 | 范例 | 结果 |
+ | 加法 | 3+5 | 8 |
- | 减法 | 8-5 | 3 |
* | 乘法 | 3*5 | 15 |
/ | 整除 | 11/10 | 1 |
% | 取模 | 7%5 | 2 |
++a | 自增 | a=3 b=++a | a=4 b=4 |
--a | 自减 | a=2 b= --a | a=1 b=1 |
a++ | 自增 | a=3 b=a ++ | a=4 b=3 |
a-- | 自减 | a=2 b= --a | a=1 b=2 |
2.赋值运算符
赋值运算符: = 、+=、-=、*=、/=、%=
作用:将常量、变量或表达式的值赋予各变量
运算符 | 运算 | 范例 | 结果 |
= | 赋值 | a=3 | a=3 |
+= | 加等于 | a+=3 | a=a+3 |
-= | 减等于 | a-=3 | a=a-3 |
*= | 乘等于 | a*=3 | a=a*3 |
/= | 除等于 | a/=3 | a=a/3 |
%= | 模等于 | a%=3 | a=a%3 |
3.比较运算符
符号:== != > < >= <=
作用:用于对两个常量或变量的大小进行比较
结果:布尔值(true或false)
运算符 | 运算 | 范例 | 结果 |
== | 相等于 | 5 == 3 | false |
!= | 不等于 | 5 != 3 | true |
< | 小于 | 9 < 8 | false |
> | 大于 | 9 > 8 | true |
>= | 大于等于 | 6 => 6 | true |
<= | 小于等于 | 8 <= 9 | true |
4.逻辑运算符
符号:& | ^ ! && ||
作用:用于对两个布尔型操作数进行运算
结果:布尔值(true或false)
优先级别:"!" > "&" > "^" > "|" > "&&" > "||"
运算符 | 运算 | 运算规则 |
& | 与 | 两个操作数都是true,结果才为true;不论左边取值,右边表达式都会进行计算 |
| | 或 | 两个操作数一 个是true,结果为true;不论左边取值,右边表达式都会进行计算 |
^ | 异或 | 两个操作数相同,结果为false;两个操作数不同,结果为true |
! | 非 | 操作数为true,结果为false;操作数为false,结果为true |
&& | 短路与 | 两个操作数都是true,结果才为true;如果左边为false,右边表达式不会进行计算 |
|| | 短路或 | 两个操作数一个是true, 结果为true;如果运算符左边的值为true,右边表达式不会进行计算 |
运算符 | 运算 | 范例 | 结果 |
& | 与 | false & true false & false true & false true & true | false false false true |
| | 或 | false | true false | false true | false true | true | true false true true |
^ | 异或 | false ^ true false ^ false true ^ false true ^ true | true false true fals |
! | 非 | ! false ! true | true false |
&& | 短路与 | false && true false && false true && false true && true | false false false true |
|| | 短路或 | false || true false || false true || false true || true | true false true true |
5.位运算符
符号:& | ~ ^ << >> >>>
作用: 针对二进制0和1进行运算
运算符 | 运算 | 运算规则 |
& | 按位与 | 两个操作数都是1,结果才为1 |
| | 按位或 | 两个操作数一个是1,结果为1 |
~ | 按位非/取反 | 操作数为1,结果为0; 操作数为0,结果为1 |
^ | 按位异或 | 两个操作数相同结果为0, 两个操作数不同结果为1 |
<< | 左移 | 将操作数所有二进制左移指定位数,左侧移走的位数舍去,右侧空位补0(负数补1) |
>> | 右移 | 将操作数所有二进制右移指定位数,右侧移走的位数舍去,左侧空位补0(负数补1) |
>>> | 无符号右移 | 将操作数所有二进制右移指定位数,右侧移走的位数舍去,左侧空位补0(不考虑正负数) |
运算符 | 运算 | 范例 | 结果 |
& | 按位与 | 0 & 0 0 & 1 1 & 0 1 & 1 | 0 0 0 1 |
| | 按位或 | 0 | 0 0 | 1 1 | 0 1 | 1 | 0 1 1 1 |
~ | 按位非/取反 | ~ 0 ~ 1 | 1 0 |
^ | 按位异或 | 0 ^ 0 0 ^ 1 1 ^ 0 1 ^ 1 | 0 1 1 0 |
<< | 左移 | 001010 << 2 110100 << 2 | 101000 010000 |
>> | 右移 | 010010 >> 2 100011 >> 2 | 000100 001000 |
>>> | 无符号右移 | 010010 >> 2 100011 >> 2 | 000100 001000 |
说明:
(1)一个整数每向左移动1位,其值扩大2倍,前提是移出位数不包含有效数字。
(2)使用位运算符执行效率高。
(3)一个整数每向右移动1位,其值缩小2倍,前提是溢出位中不包含有效数字。
(4)位运算符对操作数以二进制为单位进行运算。
(5)位运算符的操作数是整型数,包括int、short、long、byte和char。
(6)位运算符的运算结果也是整型数,包括int、long。
(7)如果操作数是char、byte、short,位运算前其值会自动晋升为int,运算结果也int。
6、 条件运算符
|
7. Java运算符的优先级
优先级:运算符参与运算的先后顺序
知识点
(1)Java中的各种运算符都有自己的优先级和结合性。
(2)优先级:在表达式运算中的运算顺序。优先级越高,在表达式中运算顺序越靠前。
(3)结合性:运算的方向:大多数运算符的结合性都是从左向右即从左向右依次进行运算。
(4)优先级别最低的是赋值运算符,其次是条件运算符。
(5)单目运算符包括!、~、++、--,优先级别高。
(6)可以通过“()”控制表达式的运算顺序,“()”优先级最高。
(7)总体而言:优先顺序为算术运算符>关系运算符>逻辑运算符
(8)结合性从右向左的只有赋值运算符、三目运算符和单目运算符(一个操作数)。
优先级 | 运算符 | 结合性 |
1 | . [ ] ( ) | 从左向右 |
2 | ++ -- ~ ! | 从右向左 |
3 | * / % | 从左向右 |
4 | + - | 从左向右 |
5 | << >> >>> | 从左向右 |
6 | < > >= <= | 从左向右 |
7 | = = != | 从左向右 |
8 | & | 从左向右 |
9 | ^ | 从左向右 |
10 | | | 从左向右 |
11 | && | 从左向右 |
12 | || | 从左向右 |
13 | ?: | 从右向左 |
14 | = *= /= %= += -= <<= >>= >>>= &= ^= |= | 从右向左 |