Java运算符面试核心是三类:自增/自减的执行时机、逻辑运算符的短路规则、位运算的二进制推演;前置++i先增后用,后置i++先用后增;&&和||因短路可能跳过右操作数;位运算需手动二进制计算,注意移位符号与复合赋值隐式转换。

Java 运算符常见面试题,核心就盯三类:自增/自减(++/--)的执行顺序、逻辑运算符的短路特性、位运算符的二进制本质。其他如算术、关系、赋值运算符虽常考,但陷阱少、理解直白,真正容易栽跟头的,是这三块。
++ 和 -- 的前置与后置区别必须掰清楚
关键不在“加1减1”,而在“什么时候生效、用哪个值”。
- 前置(如 ++i):先自增,再参与表达式计算
- 后置(如 i++):先用原值参与表达式,再自增
例如:
int i = 5;<br>int a = i++ + ++i; // a = 5 + 7 = 12,最终 i = 7
过程:i++ 返回5(i 变成6),++i 先把 i 变成7再返回7。面试常考嵌套或赋值语句中的顺序,务必手推每一步。
立即学习“Java免费学习笔记(深入)”;
&& 和 || 的短路特性不是优化技巧,而是执行规则
它直接决定右边表达式会不会被执行,影响程序行为甚至是否抛异常。
- &&:左边为 false → 整个结果确定为 false,右边不执行
- ||:左边为 true → 整个结果确定为 true,右边不执行
- & 和 | 没有短路,两边一定执行,可用于需要副作用的场景(比如必须调用某个方法)
典型例子:
String str = null;<br>if (str != null && str.length() > 0) { ... } // 安全<br>if (str != null & str.length() > 0) { ... } // 报 NullPointerException位运算符要会手动转二进制算,不能只背符号
面试不考死记硬背,考你能不能现场推:给两个整数,算出 &、|、^、~、> 的结果。
- 记住基础:a & b 是“同1才1”,a | b 是“有1就1”,a ^ b 是“不同才1”
- 移位注意符号:>> 是带符号右移(负数补1),>>> 是无符号右移(一律补0)
- 常用技巧:n & 1 判断奇偶;n & (n-1) 清除最低位的1(用于统计二进制中1的个数)
例如 a=60(00111100)、b=13(00001101),a & b = 12(00001100),这个得自己列出来对位算。
别忽略复合赋值运算符的隐式类型转换
a += b 看似和 a = a + b 一样,但类型处理完全不同。
- a += b:自动将运算结果强制转为 a 的类型(即使发生精度损失也不报错)
- a = a + b:按常规类型提升规则计算,结果类型可能更高,赋值时需显式强转
比如 byte a = 1; a += 2; ✅ 合法;但 a = a + 2; ❌ 编译失败(a+2 是 int,不能直接赋给 byte)。


















