关键要抓住三类高频陷阱:自增/自减执行时机(如i=i++赋旧值、i=++i先增后赋)、运算符优先级与结合性(如三元右结合、乘高于加)、短路逻辑行为(&&跳过右操作、&必执行两边);需用括号显式分组、拆分赋值、优先选&&防副作用。

直接看真题本身没用,关键是要抓住三类高频陷阱点:自增/自减的执行时机、运算符优先级的隐含顺序、短路逻辑的实际跳过行为。这些地方写错,编译可能通过,但结果和预期差很远。
自增自减别混用赋值
像 i = i++ 这种写法,在 Java 中实际效果是“赋旧值、再自增”,最终 i 没变。而 i = ++i 是先自增再赋值,结果加了 1。这不是理论争议,是 JVM 规范明确定义的行为——但业务代码里几乎从不这么写,因为可读性差、易出错。
- 后置自增(i++):先返回当前值,再加 1
- 前置自增(++i):先加 1,再返回新值
- 赋值搭配自增时,优先拆成两行写,比如
i++;单独一行,或用i += 1;
三元运算和算术运算按优先级分组
表达式 a > b ? a : b > c ? c : d 看着像从左到右,其实三元运算符是右结合的,等价于 a > b ? a : (b > c ? c : d)。而 a + b * c 也不是从左算,乘号优先级更高,等价于 a + (b * c)。
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
- 遇到复杂表达式,不管是否记得优先级,都主动加括号明确意图
- 尤其三元嵌套、混合算术与逻辑时,括号比背口诀更可靠
- 面试官考这个,不是看你能不能心算,而是看你有没有防御性编码意识
&& 和 & 表现完全不同
&& 是短路与:左边为 false,右边整个不执行;& 是位与兼逻辑与:两边一定都算。这点在涉及方法调用或副作用时特别关键。
- 比如
obj != null && obj.getName().length() > 0安全,换成&就可能空指针 - 再如
flag == true & log("check"),log 一定会执行;用&&则不一定 - 日常写条件判断,无特殊理由一律用
&&和||
真正吃透这些题,不是为了背答案,而是建立对表达式求值过程的直觉——哪部分先动、哪部分被跳过、变量在哪个时刻变了。这种直觉,比记住十道题更有用。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










