java运算符面试关键在于理解“类型、行为、陷阱”三层逻辑:++/--需分清前缀后缀及求值时机;&/&&区别在于是否短路及是否支持位运算;==与equals须按基本类型和引用类型分场景说明;+=等复合赋值隐含强制类型转换;>>>无符号右移高位补0。

Java 运算符面试题答得准,关键不在背结论,而在分清“类型、行为、陷阱”三层逻辑。尤其像 ++/--、&/&&、==/equals、+= 类型转换 这几类,高频又易错,答对不靠死记,靠理解底层机制。
++ 和 -- 要分清前缀后缀与求值时机
面试常考表达式结果,比如:int i = 1; int j = i++ + ++i;。核心是记住两点:
- 前缀(++i):先自增,再参与运算
- 后缀(i++):先用原值参与运算,再自增
- 整个表达式从左到右求值,但自增操作发生在对应位置执行时
所以 i++ + ++i 中:i 初始为 1 → 取 i++ 的值 1(i 变成 2)→ 再执行 ++i(i 先变 3,取值 3)→ 结果是 1 + 3 = 4。
& 和 && 的本质区别是“是否短路+是否位运算”
不能只答“&& 短路,& 不短路”。要指出:
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
- & 是双功能运算符:对布尔值作逻辑与(不短路),对整数作按位与
- && 是纯逻辑运算符:只用于 boolean,且左操作数为 false 时,右操作数完全不执行(避免空指针等副作用)
- 例如:
obj != null & obj.getName().equals("a")可能空指针;换成&&就安全
== 和 equals 必须绑定“比较对象”来答
直接说“== 比地址,equals 比内容”不严谨。应分场景说明:
- 基本类型(如 int、char):只能用 ==,equals 不可用
- 引用类型(如 String、Integer):
• == 比较的是栈中引用是否指向堆中同一对象
• equals 默认继承自 Object(比地址),但 String、Integer 等重写了它(比内容)
• 注意 Integer 缓存:-128~127 范围内用 == 可能为 true,超出范围则 false
复合赋值运算符(如 +=)隐含强制类型转换
这是编译器的语法糖,不是简单展开。例如:
-
short s = 1; s = s + 1;→ 报错:s+1 提升为 int,不能直接赋给 short -
s += 1;→ 正确:编译器自动插入 (short) 强转,等价于s = (short)(s + 1); - 同理适用于 byte、char 等小整型变量
位运算符重点掌握 > >>> 与符号位关系
面试若问“60
- :左移,低位补 0,相当于 ×2ⁿ(无符号)
- >>:带符号右移,高位补原符号位(负数补 1,正数补 0)
- >>>:无符号右移,高位一律补 0(负数变正)
- 例如:
-1 >> 1还是 -1(全 1 右移补 1);-1 >>> 1变成极大正数(全 1 右移补 0)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










