Java 运算符对照表

免费使用 超详细版 可复制

Java 运算符完整速查表,涵盖算术、关系、逻辑、位运算、赋值、三元、instanceof、类型转换、运算符优先级等全部内容。每条运算符均配有代码示例、运行结果与详细说明,适合 Java 初学者系统学习,也方便资深开发者随时查阅。

分类 运算符 名称 示例代码 结果 说明 / 注意事项
算术运算符
+ 加法 int a = 3 + 2; a = 5 数值相加;字符串拼接(当操作数含String时)
- 减法 int a = 5 - 3; a = 2 基本数值减法
* 乘法 int a = 4 * 3; a = 12 整数乘法,溢出不抛异常
/ 除法 int a = 7 / 3; a = 2 整数除法截断小数;浮点除法保留小数
% 取模(取余) int a = 7 % 3; a = 1 结果的符号与被除数相同
++ 自增 int a=5; a++; a = 6 前缀++先加后用,后缀++先用后加
-- 自减 int a=5; a--; a = 4 前缀--先减后用,后缀--先用后减
关系运算符
== 等于 5 == 5 true 比较基本类型值;对象比较用 equals()
!= 不等于 5 != 3 true 与 == 逻辑相反
> 大于 5 > 3 true 仅适用于数值及 char 类型
< 小于 3 < 5 true 同上
>= 大于等于 5 >= 5 true 大于等于判断
<= 小于等于 3 <= 5 true 小于等于判断
逻辑运算符
&& 短路与 true && false false 左为false时右表达式不执行
|| 短路或 true || false true 左为true时右表达式不执行
! 逻辑非 !true false 取反,单目运算符
& 非短路与 true & false false 无论左值如何,右表达式都会执行
| 非短路或 true | false true 无论左值如何,右表达式都会执行
^ 逻辑异或 true ^ true false 两操作数相同为false,不同为true
位运算符
& 按位与 5 & 3 → 0101 & 0011 1 (0101 & 0011 = 0001) 对应位都为1才为1
| 按位或 5 | 3 → 0101 | 0011 7 (0111) 对应位有一个为1即为1
^ 按位异或 5 ^ 3 → 0101 ^ 0011 6 (0110) 对应位不同为1,相同为0
~ 按位取反 ~5 -6 所有位取反,结果为补码表示
<< 左移 5 << 1 → 0101 << 1 10 (1010) 左移n位等价于乘以2^n
>> 右移(带符号) -8 >> 1 -4 右移n位等价于除以2^n,保留符号位
>>> 无符号右移 -8 >>> 1 2147483644 高位补0,不保留符号位
赋值运算符
= 赋值 int a = 10; a = 10 将右值赋给左操作数
+= 加等 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 &= 3; a = a & 3 按位与后赋值
|= 按位或等 a |= 3; a = a | 3 按位或后赋值
^= 按位异或等 a ^= 3; a = a ^ 3 按位异或后赋值
<<= 左移等 a <<= 1; a = a << 1 左移后赋值
>>= 右移等 a >>= 1; a = a >> 1 右移后赋值
>>>= 无符号右移等 a >>>= 1; a = a >>> 1 无符号右移后赋值
三元运算符
? : 条件(三目) int max = a > b ? a : b; 返回较大值 可嵌套但降低可读性,建议不超过一层
类型判断运算符
instanceof 类型检测 obj instanceof String true/false 判断对象是否为某类或其子类的实例
类型转换
(type) 强制类型转换 int a = (int)3.14; a = 3 窄化转换可能丢失精度;对象间转换需有继承关系
对象访问
. 成员访问 obj.field / obj.method() 访问成员 访问对象字段或调用方法
数组
[] 数组访问/声明 arr[0] = 10; 下标访问 数组下标从0开始,越界抛 ArrayIndexOutOfBoundsException
创建对象
new 实例化 new String("hi") 新对象引用 在堆上分配内存并返回引用
优先级(高→低)
() [] . 最高优先级 a.b.c / arr[0] 先算 括号、成员访问、数组
! ~ ++ -- (type) 单目前缀 !flag / ~a 先算 逻辑非、按位取反、自增自减、强转
* / % 乘除模 a * b / c 高于加减
+ - 加减 a + b - c
<< >> >>> 位移 a << 2
< <= > >= instanceof 关系比较 a > b
== != 相等判断 a == b
& 按位与 a & b
^ 按位异或 a ^ b
| 按位或 a | b
&& 短路与 a && b
|| 短路或 a || b
? : 三元 a ? b : c
= += -= 等 赋值 a = b = c 最低 从右向左结合

Java 运算符注意事项

  • == 比较基本类型的值,比较对象时比较的是引用地址,内容比较请用 equals()
  • &&|| 是短路运算(左值可确定结果时右值不执行),&| 非短路
  • • 整数除法 / 会截断小数,需要小数结果时至少一个操作数为浮点型
  • % 取模结果的符号与被除数(左操作数)相同:-7 % 3 = -1,7 % -3 = 1
  • >>> 无符号右移高位补 0,仅用于整数类型,对负数结果影响巨大
  • • 复合赋值运算符(如 +=)隐含强制类型转换:short s=1; s+=1; 合法,但 s=s+1 编译报错
  • • 运算符优先级复杂时务必使用括号 (),可读性和安全性都更高
  • instanceof 左侧为 null 时始终返回 false,不会抛异常

算术速记

+, -, *, /, % 同数学;++/-- 注意前缀后缀差异

比较选择

基本类型用 ==,字符串和对象用 equals(),null 安全用 Objects.equals()

逻辑短路

&& 左false短路,|| 左true短路;可利用此特性写防御性代码

位运算技巧

a & 1 判奇偶;a | (1<