Java 运算符详解
在 Java 中,运算符用于对变量和值执行操作。Java 提供了丰富的运算符,可分为以下几类:算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符等。以下是 Java 运算符的详细介绍:
一、算术运算符
用于基本数学运算,支持整数、浮点数。
| 运算符 | 描述 | 示例 |
|---|---|---|
+ |
加法 | 5 + 3 → 8 |
- |
减法 | 5 - 3 → 2 |
* |
乘法 | 5 * 3 → 15 |
/ |
除法 | 5 / 3 → 1(整数相除)5.0 / 3.0 → 1.666...(浮点数) |
% |
取模(余数) | 5 % 3 → 2 |
++ |
自增 | int a = 5; a++; → a变为6 |
-- |
自减 | int a = 5; a--; → a变为4 |
自增 / 自减的前置与后置区别:
int a = 5;
int b = a++; // 先赋值后自增,b=5,a=6
int c = ++a; // 先自增后赋值,a=7,c=7
二、关系运算符
返回布尔值(
true或false),用于比较两个值。| 运算符 | 描述 | 示例 |
|---|---|---|
== |
等于 | 5 == 3 → false |
!= |
不等于 | 5 != 3 → true |
> |
大于 | 5 > 3 → true |
< |
小于 | 5 < 3 → false |
>= |
大于等于 | 5 >= 3 → true |
<= |
小于等于 | 5 <= 3 → false |
示例:
int x = 5;
int y = 3;
System.out.println(x == y); // 输出: false
System.out.println(x != y); // 输出: true
三、逻辑运算符
用于布尔值的逻辑运算。
| 运算符 | 描述 | 示例 | ||||
|---|---|---|---|---|---|---|
&& |
逻辑与 | (5 > 3) && (2 < 4) → true |
||||
| ` | ` | 逻辑或 | `(5 < 3) | (2 < 4)→true` |
||
! |
逻辑非 | !(5 > 3) → false |
短路特性:
&&:若左侧为false,右侧不再执行。||:若左侧为true,右侧不再执行。
示例:
int a = 5;
int b = 3;
System.out.println(a > b && b++ > 2); // b++不会执行,b仍为3
四、位运算符
对整数的二进制位进行操作。
| 运算符 | 描述 | 示例(a=60,b=13) |
|---|---|---|
& |
按位与 | a & b → 12(二进制:0000 1100) |
| |
按位或 | a | b → 61(二进制:0011 1101) |
^ |
按位异或 | a ^ b → 49(二进制:0011 0001) |
~ |
按位取反 | ~a → -61(二进制补码) |
<< |
左移 | a << 2 → 240(二进制:1111 0000) |
>> |
右移 | a >> 2 → 15(二进制:0000 1111) |
>>> |
无符号右移 | a >>> 2 → 15(正数与>>相同) |
示例:
int a = 60; // 二进制: 0011 1100
int b = 13; // 二进制: 0000 1101
System.out.println(a & b); // 输出: 12
System.out.println(a << 2); // 输出: 240
五、赋值运算符
用于赋值操作,支持复合赋值。
| 运算符 | 示例 | 等价于 |
|---|---|---|
= |
a = 5 |
a = 5 |
+= |
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 |
<<= |
a <<= 2 |
a = a << 2 |
>>= |
a >>= 2 |
a = a >> 2 |
示例:
int a = 5;
a += 3; // 等价于 a = a + 3
System.out.println(a); // 输出: 8
六、三元运算符
简化
if-else条件判断。语法:
条件表达式 ? 值1 : 值2
- 若条件为
true,返回值 1;否则返回值 2。
示例:
int a = 5;
int b = 3;
int max = (a > b) ? a : b; // max = 5
七、instanceof 运算符
用于判断对象是否是某个类的实例。
语法:
对象 instanceof 类示例:
String str = "Hello";
boolean isString = str instanceof String; // true
八、运算符优先级
优先级高的运算符先计算,可使用括号
()改变优先级。从高到低排序:
- 后缀:
(),[],. - 一元:
++,--,+,-,~,! - 乘除取模:
*,/,% - 加减:
+,- - 位移:
<<,>>,>>> - 关系:
<,>,<=,>=,instanceof - 相等:
==,!= - 按位与:
& - 按位异或:
^ - 按位或:
| - 逻辑与:
&& - 逻辑或:
|| - 三元:
? : - 赋值:
=,+=,-=,*=,/=,%=,<<=,>>=,>>>=
示例:
int result = 5 + 3 * 2; // 输出: 11(先乘后加)
int result2 = (5 + 3) * 2; // 输出: 16(括号优先)
九、总结
- 算术运算符:处理基本数学运算。
- 关系运算符:比较值并返回布尔结果。
- 逻辑运算符:组合布尔条件,支持短路特性。
- 位运算符:直接操作二进制位。
- 赋值运算符:赋值和复合赋值操作。
- 三元运算符:简化条件判断。
- instanceof:检查对象类型。
- 优先级:决定运算顺序,括号可改变优先级。
合理使用运算符能让 Java 代码更简洁、高效。特别注意自增 / 自减的前置后置区别,以及逻辑运算符的短路特性。
浙公网安备 33010602011771号