java运算符面试聚焦行为差异、执行顺序与类型细节三大核心:++a/a++的前置后置差异、&&/&的短路与非短路区别、==/equals()的地址与内容对比;优先级结合性影响表达式求值(如&优先级低于==);类型隐式转换规则(如整数除法截断、char提升为int)需精准掌握。

Java 运算符面试不考死记硬背,而是看你会不会用、能不能避开坑、懂不懂底层逻辑。抓核心要点,重点就三个方向:行为差异、执行顺序、类型细节。
盯住「行为有差别」的运算符
面试最爱对比同类但行为不同的运算符,一问就暴露理解深度:
-
++a 和 a++:前置先加后用,后置先用再加;在表达式里结果不同,比如
int b = a++ + ++a;需算清每步值 -
&& 和 &:前者短路(左边 false 就跳过右边),后者全执行;常用于避免空指针,如
obj != null && obj.isValid() - == 和 equals():前者比地址(基本类型比值),后者比内容(String、Integer 等重写了该方法);面试必问 String 池和 Integer 缓存的影响
- >> 和 >> :无符号右移补 0,有符号右移补符号位;处理网络字节序或位掩码时容易出错
理清「优先级+结合性」的真实影响
写出来的表达式不一定按你想象的顺序算,尤其混合使用时:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
- 赋值类(
= += -=)是右结合,a = b = c等价于a = (b = c) - 逻辑与(
&&)优先级低于关系运算符(==),所以a 不用括号也安全;但 <code>a + b == c && d > e中+先于==,没问题 - 位运算符中
&优先级低于==,常见错误:if (flag & 4 == 0)实际等价于if (flag & (4 == 0))→ 永远 false,正确写法是if ((flag & 4) == 0)
吃透「类型相关」的隐式规则
运算符背后藏着自动类型提升和截断,稍不注意就丢精度或出负数:
- 整数除法
5 / 2结果是2,不是2.5;要得小数必须至少一边是浮点数(5.0 / 2或5 / 2.0) - 取模
%支持 double 类型,5.5 % 2.1合法且有定义,不是只能用于 int - char 参与算术运算会自动提升为 int,
'a' + 1得到 98(即 'b' 的 ASCII 值),不是字符串拼接 - byte/short 运算时自动转成 int,
byte a = 1, b = 2; byte c = a + b;编译报错——因为a + b是 int,需显式强转
三元运算符别只当简写,它有返回值和类型推导
很多人只记得 条件 ? 值1 : 值2,但面试会挖更深:
- 两个分支类型不同时,JVM 会找它们的公共父类型(如
Integer和Double→ 推导为Number或Object) - 不能用 void 方法做分支,
cond ? doA() : doB()要求两个方法都返回相同类型 - 嵌套三元易读性差,面试官可能反问:“这段逻辑用 if 更清晰,为什么选 ?:?”——考察代码权衡意识
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










