.equals
时间: 2025-08-30 15:06:27 AIGC 浏览: 8
### Java 中 `.equals` 方法的使用说明
`.equals` 是 Java 中 `Object` 类的一个方法,用于比较两个对象的内容是否相同。默认情况下,它会比较对象的内存地址(即引用)。然而,在许多类中(如 `String`、`Integer` 等),该方法被重写以便基于实际内容进行比较。
#### 默认行为
对于未重写的类,默认实现是继承自 `Object` 的版本,其作用是比较两个对象的引用是否指向同一个实例[^1]。
```java
public boolean equals(Object obj) {
return (this == obj);
}
```
如果需要按值比较,则应在子类中覆盖此方法并提供具体的逻辑。
---
#### String 类中的 `.equals`
在字符串 (`String`) 类中,`.equals()` 已经被重新定义为逐字符对比两串字符序列是否完全一致。例如:
```java
System.out.println("abc".equals("abc")); // 输出 true
System.out.println("abc".equals(null)); // 抛出 NullPointerException
```
需要注意的是,当尝试调用 `null` 对象上的任何方法时都会引发空指针异常。因此直接从可能为空的对象上调用 `.equals()` 存在风险[^3]。
---
#### 推荐做法:使用 `Objects.equals(a, b)`
为了更安全地执行等于操作而无需担心潜在的 NPE(Null Pointer Exception),可以采用工具类 `java.util.Objects` 提供的方法——`Objects.equals(a, b)` 。 它内部先检查两者皆为 null 或者相等的情况再进一步深入比较具体内容从而避免错误发生[^2][^4]。
以下是它的基本工作原理:
- 若双方均为 null ,则视为相等;
- 否则继续按照常规方式调用第一个参数自身的 equals 函数完成判定过程。
示例代码如下所示:
```java
import java.util.Objects;
public class EqualsExample {
public static void main(String[] args) {
String str1 = "hello";
String str2 = new String(str1); // 创建一个新的字符串对象
System.out.println(Objects.equals(str1, str2)); // true
System.out.println(Objects.equals(str1, null)); // false
System.out.println(Objects.equals(null, null)); // true
}
}
```
以上程序片段展示了如何利用 `Objects.equals` 来简化日常开发过程中涉及频繁的数据一致性校验场景下的编码复杂度以及提升健壮性。
---
### 总结
- **安全性**:建议优先选用 `Objects.equals()` 替代直接调用某一方的 `.equals()` 方法以规避可能出现的 NullPointer 异常问题。
- **适用范围广**:无论是基础数据类型的封装形式还是复杂的业务实体模型之间都可以借助此类辅助手段达成预期目标。
阅读全文
相关推荐



















