大厂Java面试运算符题重在辨析、陷阱与边界,需掌握自增自减执行顺序、&&与&短路差异、位运算与浮点精度陷阱、三元运算符优先级等核心细节。

大厂Java面试中,运算符题看似基础,实则常被用来快速检验候选人对语言细节的掌握深度和思维严谨性。光背概念没用,关键在“辨析+陷阱+边界”三步练法。
重点练自增自减的执行顺序
这是高频雷区。i++ 和 ++i 不只是“先用后加”“先加后用”的文字描述,要能推演 JVM 执行栈行为。
- 写代码验证:int i = 0; i = i++; 输出一定是 0 —— 因为赋值发生在自增前,i 被覆盖回原值
- 对比测试:int a = 1, b = 1; System.out.println(a++); System.out.println(++b); 明确输出差异
- 嵌套场景:System.out.println(++a + a++); 拆解每一步操作数取值和变量变更时机
逻辑运算符必须分清 && 和 &
短路与(&&)和逻辑与(&)在布尔表达式中结果相同,但行为不同——后者不跳过右侧计算,可能引发空指针或副作用。
- 写一个带方法调用的表达式:methodA() && methodB() vs methodA() & methodB(),观察 methodB() 是否执行
- 真实场景模拟:if (obj != null && obj.isValid()) 安全;换成 & 就失去保护作用
- 注意:& 还可用于整数位运算,语境不同含义不同,面试官常故意混用考察理解
别忽略位运算和精度陷阱
金额计算、状态标记、性能敏感场景都依赖位运算;浮点误差则是经典“反直觉”考点。
立即学习“Java免费学习笔记(深入)”;
- 手算:5 & 3、12 | 8、7 ^ 2、-5 >>> 1,再用代码验证,理解补码和无符号右移区别
- 写个测试:0.1 + 0.2 == 0.3?输出 false —— 解释 IEEE 754 表示限制,引出 BigDecimal 的必要性
- 金额题必答:业务系统中金额必须用 BigDecimal,不能用 double/float,理由要说到二进制无法精确表示十进制小数
三元运算符和赋值结合要小心
看似简洁,但优先级容易出错,尤其和 +=、== 等混合时。
- 典型错误:boolean flag = true; int x = flag ? 1 : 2 + 3; 实际是 flag ? 1 : (2 + 3),不是 (flag ? 1 : 2) + 3
- 赋值陷阱:int a = 1, b = 2; a = b == 2 ? 10 : 20; 注意 == 优先级高于 ? :
- 建议:复杂逻辑不用三元,if-else 更清晰;真要用,加括号明确意图


















