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<