java运算符面试重点是执行顺序与副作用影响:前缀/后缀自增区别在“何时加”和“取何值”;&&/||具短路性而&/|无;三元运算符右结合且优先级低需括号;复合赋值隐含类型转换。

Java 运算符是面试高频考点,尤其自增自减、逻辑短路、三元嵌套和复合赋值这几类题,看似简单,实则极易踩坑。学的时候别死记符号,重点抓“执行顺序”和“副作用影响”这两个底层逻辑。
盯紧 ++ 和 -- 的位置与时机
前缀(++i)和后缀(i++)的区别不在“加不加1”,而在“什么时候加”以及“表达式取哪个值”。这是绝大多数运算符面试题的起点。
- 单独使用 i++ 或 ++i 效果一样,都让 i 加 1
- 用在表达式里就完全不同:比如 int a = i++ → 先把 i 的旧值赋给 a,再加 1;int a = ++i → 先加 1,再把新值赋给 a
- 组合表达式如 ++i + i++ 要分步拆解:先算 ++i(i 变、表达式取新值),再算 i++(表达式取当前值、i 再变),最后相加
- 绝对避免写 i = i++ 这类语句——它在 Java 中行为明确(结果不变),但语义混乱,面试官一看就扣分
逻辑运算符必须分清 && 和 &
短路特性不是语法糖,而是运行时行为,直接影响代码是否执行、会不会空指针。
- &&:左边为 false,右边整个不执行(比如 obj != null && obj.getName().length() > 0 安全)
- &:两边一定都执行(哪怕左边是 false,右边仍会求值,可能抛 NPE)
- 同理,|| 短路,| 不短路;面试常考“下面哪行会报错”,关键看右侧是否有副作用或空引用
三元运算符 ? : 要手动加括号
?: 是右结合,优先级低于大多数运算符,不加括号极易误读。
- 像 a > b ? a : b > c ? c : d 实际等价于 a > b ? a : (b > c ? c : d),不是 (a > b ? a : b) > c ? c : d
- 面试题常故意不加括号,让你判断结果;实战中只要超过一层嵌套,一律用括号显式分组
- 复杂逻辑建议直接改用 if-else——可读性远高于嵌套 ?:
复合赋值藏着类型陷阱
+= 看似只是简写,但它隐含强制类型转换,而 + 没有。
- short s = 1; s += 1; ✅ 编译通过(+= 自动处理类型提升)
- short s = 1; s = s + 1; ❌ 编译失败(s+1 结果是 int,不能直接赋给 short)
- 类似问题也出现在 byte、char 上;面试常拿这个考“为什么一个行、一个不行”
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











