工具用的顺手吗?
你的反馈能帮助我们做得更好
快速查询Java运算符优先级,提供完整优先级表与结合性说明
此表是收录语法的参考子集,不执行或验证示例。数字是本站分组,不能替代所用语言版本的完整语法、类型和求值规则;例子保留原始代码与字面值。 参考来源
expr++后置运算左结合返回当前值后将变量加 1。
i++expr--后置运算左结合返回当前值后将变量减 1。
i--++expr一元运算右结合先将变量加 1,再返回新值。
++i--expr一元运算右结合先将变量减 1,再返回新值。
--i+expr一元运算右结合返回操作数的值,触发数值提升。
+x-expr一元运算右结合返回操作数的相反数。
-x~一元运算右结合对整数按位取反,每一位 0 变 1、1 变 0。
~mask!一元运算右结合对布尔值取反,true 变 false,false 变 true。
!ready(type)一元运算右结合将表达式显式转换为目标类型,对引用类型会进行 ClassCastException 检查。
(int) 3.14*乘除取余左结合两个操作数相乘。
a * b/乘除取余左结合整数除法向零截断;浮点除法保留小数。
10 / 3%乘除取余左结合返回相除的余数,操作数可以是整型或浮点型。
10 % 3+加减运算左结合数值相加,或与字符串相连进行拼接。
"Hi " + name-加减运算左结合两个数相减。
a - b<<位移运算左结合整数按位左移,高位丢弃,低位补 0。
1 << 3>>位移运算左结合整数按位右移,保留符号位。
-8 >> 2>>>位移运算左结合整数按位右移,高位补 0,Java 独有。
-1 >>> 28<关系运算左结合左操作数小于右操作数返回 true。
a < b<=关系运算左结合左小于或等于右返回 true。
a <= b>关系运算左结合左操作数大于右操作数返回 true。
a > b>=关系运算左结合左大于或等于右返回 true。
a >= binstanceof关系运算左结合判断对象是否为指定类型或其子类的实例。
obj instanceof String==相等判断左结合基本类型比较值;引用类型比较是否为同一对象。
a == b!=相等判断左结合基本类型比较值是否不同;引用类型比较是否非同一对象。
a != b&按位运算左结合整数按位与;布尔型表示不短路逻辑与。
a & b^按位运算左结合整数按位异或;布尔型表示逻辑异或。
a ^ b|按位运算左结合整数按位或;布尔型表示不短路逻辑或。
a | b&&逻辑运算左结合短路逻辑与:左操作数为 false 时不计算右操作数。
a && b||逻辑运算左结合短路逻辑或:左操作数为 true 时不计算右操作数。
a || b?:条件运算右结合根据布尔条件返回两个表达式之一。
x > 0 ? 1 : -1=赋值运算右结合将右操作数的值赋给左操作数。
x = 10+=赋值运算右结合x = x + y 的简写,同样支持字符串拼接。
x += 1-=赋值运算右结合x = x - y 的简写。
x -= 1*=赋值运算右结合x = x * y 的简写。
x *= 2/=赋值运算右结合x = x / y 的简写。
x /= 2%=赋值运算右结合x = x % y 的简写。
x %= 3&=赋值运算右结合x = x & y 的简写。
x &= 0xFF^=赋值运算右结合x = x ^ y 的简写。
x ^= mask|=赋值运算右结合x = x | y 的简写。
x |= 0x01<<=赋值运算右结合x = x << y 的简写。
x <<= 2>>=赋值运算右结合x = x >> y 的简写。
x >>= 2>>>=赋值运算右结合x = x >>> y 的简写。
x >>>= 2->Lambda 表达式右结合Java 8 引入的 Lambda 表达式,将参数列表与函数体分隔。
(a, b) -> a + b概览
了解工具能解决的问题、计算或处理逻辑,以及数据边界。
运算符优先级帮助判断一个表达式先结合哪一部分。例如a + b * c中,乘法先与b和c结合,再把结果与a相加。若想让加法先进行,可以加括号写成(a + b) * c。查询优先级能帮助读代码、排查括号和分组问题,但它本身不会判断变量类型或表达式是否能编译。理解分组时,可以把高优先级部分临时用括号标出来;即使最后删掉括号,这种读法也能帮助你检查原表达式的结构。
条目按优先级分组,并提供类别、结合方向、符号名称、简要说明或示例。可以用符号、名称、说明或示例文字搜索,也可按类别与结合方向筛选;需要讨论某个符号时,可以复制符号或示例。分组数字适合快速定位,不应当当作Java规范中独立定义的完整等级体系。若搜索结果为空,可试试符号本身、英文名称或示例中的词语;筛选条件也可能同时缩小结果范围。
指南
按步骤完成操作,并通过示例核对输入与结果。
例如3 * 4 + 1先算乘法,得到13;而3 * (4 + 1)先算括号里的加法,得到15。括号可直接表达预期分组,通常比依赖读者记忆更清楚。对于x - y + z这类同优先级运算,可以用表中结合方向辅助判断分组,再通过括号写成明确形式。
优先级说明语法如何把表达式分组,结合性说明相同优先级的运算符如何关联。它们不等同于所有子表达式的求值时机,也不能代替对短路逻辑、副作用或语言语义的判断。Oracle发布的Java语言规范以表达式语法定义这些关系,并说明括号可用于明确分组。阅读Java SE 27语言规范第15章(Oracle;支持Java表达式语法、分组与括号规则;检查日期:2026-09-26)。比如条件表达式中,分组关系之外还要理解逻辑运算的短路语义;如果子表达式会修改变量或调用方法,也不要仅靠优先级表推断完整执行过程。
场景
查看这项工具在不同工作与生活流程中的用法。
阅读复杂条件或算术表达式时,可先搜索可疑符号,再按优先级把表达式加上临时括号,检查自己读出的结构是否符合预期。讲解代码时,先用a + b * c这样的简单例子展示分组,再用括号改变分组,让差别一目了然。代码评审中,如果表达式同时包含多类运算符,显式括号也有助于减少团队成员之间的理解偏差。
学习运算符时,建议把表格当作速查入口;需要确认语言层面的边界、语法或新版本变化时,应回到对应版本的Java语言规范。
问答
集中解答高频疑问与容易混淆的问题。
它先决定表达式的语法分组,但“先分组”不等于对所有子表达式求值时机的完整说明。还需结合Java语义,特别是短路运算和副作用。
结合方向描述相同优先级运算符的语法分组方式,不应简单等同于程序执行中每个操作数的求值顺序。
不宜这样处理。Java规范把lambda表达式纳入表达式语法,箭头在该语法中的位置不能简单套用算术运算符表格来推断。
须知
使用前了解适用范围、结果限制与必要提醒。
推荐
查找相关工具、专题与可用的 API 能力。