文章摘要: 运算符用于对变量和值的执行操作。
- Java运算符共分为6类:算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、条件运算符(三元运算符)
算术运算符(共7个)
| 运算符 | 名称 | 例子 |
|---|---|---|
| + | 加(求和) | 正号 | x + y | +1 |
| - | 减(求差) | 负号 | x - y | -1 |
| * | 乘(求积) | x * y |
| / | 除(取整) | x / y |
| % | 模(取余) | x % y |
| ++ | 自增 | 1 = 1++, 2 = ++1 |
| -- | 自减 | 1 = 1--, 0 = --1 |
注释
%计算公式:a % b = a - a / b * b- 自增自减(前):
1 = 1++,先取值后运算。 - 自增自减(后):
1 = ++1,先运算后取值。
关系(比较)运算符(共6个)
| 运算符 | 名称 | 例子 |
|---|---|---|
| == | 全等 | x == y |
| != | 不等 | x != y |
| < | 小于 | x < y |
| > | 大于 | x > y |
| <= | 小于等于 | x <= y |
| >= | 大于等于 | x >= y |
逻辑运算符(共3个)
| 运算符 | 名称 | 描述 | 例子 |
|---|---|---|---|
| & | 逻辑与(并且) | 若两个条件都为true,则返回true | 0&0=0, 1&1=1, 0&1=0 |
| && | 短路与(并且) | 若两个条件都为true,则返回true | 0&&0=0, 1&&1=1, 0&&1=0 |
| | | 逻辑或 | 两个条件中有1个或2个为true,则返回true | 0|0=0, 1|1=1, 0|1=1 |
| || | 短路或 | 两个条件中有1个或2个为true,则返回true | 0||0=0, 1||1=1, 0||1=1 |
| ! | 逻辑非(逻辑与取反) | “逻辑与”的反转结果,若结果为false,则返回true | !(0&0)=1, !(1&1)=0, !(0&1)=1 |
| ^ | 逻辑异或(逻辑或取反) | “逻辑或”的反转结果,若结果为false,则返回true | !(0|0)=1, !(1|1)=0, !(0|1)=0 |
注释
&(逻辑与),|(逻辑或)
- 即使第一个条件为
false,也会继续判断第二个条件,效率低。
&&(短路与),||(短路或)
- 如果第一个条件为
false,就不会再判断第二个条件,效率高。
位运算符(共8个)
- 位运算符操作的对象是二进制数,因此需要将数据转换为二进制数再进行运算,特别注意进制转换相关知识。Diary-进制
- 位运算符比除法、乘法计算速度快很多。
| 运算符 | 名称 | 描述 | 例子 |
|---|---|---|---|
| & | 按位与 | 相对应的位都是1,则结果为1,否则为0 | |
| | | 按位或 | 相对应的位有1个或2个是1,则结果为1,否则为0 | |
| ^ | 按位异或 | 相对应的位有1个或2个是1,则反转后为0;若都是0,则反转后为1 | |
| ~ | 按位取反 | 按位取反每一位操作数,即0改成1,1改成0 | |
| >> | 右移 | 低位溢出,符号位不变,并用符号位补溢出的高位 | 等价于 |
| << | 左移 | 符号位不变,低位补0 | 等价于 |
| >>> | 无符号右移 | 忽略符号位,低位溢出,高位补0 |
赋值运算符(共13个)
| 运算符 | 名称 | 例子 | 等效于 |
|---|---|---|---|
| = | 赋值 | x = 1 | x = 1 |
| += | 加法赋值 | x += 1 | x = x + 1 |
| -= | 减法赋值 | x -= 1 | x = x - 1 |
| *= | 乘法赋值 | x *= 1 | x = x * 1 |
| /= | 取整赋值 | x /= 1 | x = x / 1 |
| %= | 取余赋值 | x %= 1 | x = x % 1 |
| &= | 位与赋值 | 二进制A &= 二进制B | 二进制B = 二进制A & 二进制B |
| |= | 位或赋值 | 二进制A |= 二进制B | 二进制B = 二进制A | 二进制B |
| ^= | 位异或赋值 | 二进制A ^= 二进制B | 二进制B = 二进制A ^ 二进制B |
| ~= | 位取反赋值 | ||
| <<= | 位左移赋值 | 二进制A <<= 移动的位数 | 二进制B = 二进制A << 移动的位数 |
| >>= | 位右移赋值 | 二进制A >>= 移动的位数 | 二进制B = 二进制A >> 移动的位数 |
| >>>= | 位右移补零赋值 |
注释
复合赋值运算符会进行类型转换。
三元(条件)运算符(共1个)
- 条件运算符又称为三元运算符。
- 运算符符号:
?(问号)、:(冒号)。 - 运算时需要操作三个操作数。
案例
// <判断条件> ? <条件为`ture`执行> : <条件为`false`执行>
//案例一
int a = 1;
string data = (a > 0) ? "正确" : "错误";
System.out.println(data)
// 结果是:正确
// 案例二
int a = 1;
string data = (a < 0) ? "正确" : "错误";
System.out.println(data)
// 结果是:错误