== 运算符用于引用类型时比较内存地址是否相同:若两引用指向同一对象实例则返回 true,否则 false;String 等类重写 equals() 比较内容,而 == 仍比地址;判空应优先用 == null。

用 == 运算符判断。
使用 == 比较引用地址
Java 中 == 用于基本类型时比较值,用于引用类型时比较的是两个引用变量是否指向**同一块内存地址**(即是否为同一个对象实例)。
- 如果两个引用指向堆中同一个对象,== 返回 true
- 即使两个对象内容完全相同(如两个 new String("abc")),只要不是同一个实例,== 就返回 false
不要混淆 equals() 和 ==
equals() 默认行为和 == 一样(继承自 Object,比较地址),但很多类(如 String、Integer、ArrayList)重写了它,用于比较**逻辑内容是否相等**。
- String a = new String("hello"); String b = new String("hello");
a == b → false(不同对象)
a.equals(b) → true(内容相同) - String c = "hello"; String d = "hello";
c == d → true(字符串常量池优化,指向同一对象)
适用场景举例
以下情况适合用 == 判断同一性:
立即学习“Java免费学习笔记(深入)”;
- 检查某个回调或监听器是否已注册(避免重复添加)
- 单例模式中验证是否为唯一实例
- 在集合中快速判断是否是同一个监听器要移除
- 调试时确认两个变量是否真的引用同一个对象
注意 null 安全
用 == 判断引用时,null 是合法值,不会抛 NullPointerException:
- obj == null → 安全,推荐用于判空
- obj.equals(null) → 若 obj 为 null,会抛出 NullPointerException


















