“同一个引用”指两个变量指向堆内存中同一地址,修改一个会影响另一个;用==比较引用变量可判断是否同引用,它只比较地址不比较内容,string字面量因常量池可能例外,而equals()默认同==但常被重写为比较内容。

用 == 运算符判断两个对象是否为同一个引用。
什么是“同一个引用”
当两个变量指向堆内存中同一块地址时,它们就是同一个引用。这意味着修改其中一个变量所指向对象的状态,另一个变量也能看到变化——因为它们根本就是“同一个东西”。
怎么用 == 判断
直接使用双等号比较两个引用变量:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- Employee e1 = new Employee("Alice", 8000);
- Employee e2 = e1;
- System.out.println(e1 == e2); // 输出 true
- Employee e3 = new Employee("Alice", 8000);
- System.out.println(e1 == e3); // 输出 false(不同对象,不同地址)
注意点
== 对引用类型只看内存地址,不看内容。哪怕两个对象字段完全一样,只要不是同一个实例,== 就返回 false。
String 是个常见例外:字符串常量池中的字面量可能复用地址,比如 "hello" == "hello" 是 true,但 new String("hello") == new String("hello") 一定是 false。
和 equals() 的区别
== 检查是否为同一引用;equals() 默认行为也是 ==,但多数业务类会重写它来比较内容。例如:
- e1.equals(e2) → true(同一引用,必然内容相同)
- e1.equals(e3) → 可能为 true(取决于 equals 是否被重写、怎么重写)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










