在 Java 中,equals() 方法与 == 运算符用于比较对象,但行为不同:== 比较对象引用,基本类型比较实际值。equals() 比较对象内容,不可变对象比较实际值,可变对象根据自定义覆盖逻辑进行比较。最佳实践:基本类型使用 == 比较实际值;不可变引用类型使用 equals() 比较实际值;可变引用类型覆盖 equals() 方法实现自定义比较;尽量避免使用 == 比较引用类型。

Java 中 equals() 与 == 的区别
在 Java 中,equals() 方法和 == 运算符用于比较对象。但它们的行为却大不相同。
== 运算符
- 比较两个对象的引用是否指向同一内存地址。
- 对于基本类型,它比较原始值。
- 对于引用类型,它比较对象引用,而不是对象的内容。
equals() 方法
立即学习“Java免费学习笔记(深入)”;
- 比较两个对象的实际内容。
- 对于 String、Integer 等不可变对象,它比较实际值。
- 对于可变对象,它由程序员覆盖并实现自定义比较。
主要区别
基本类型:
-
==比较实际值(对于基本类型)。 -
equals()不适用于基本类型。
引用类型:
-
==比较对象引用。 -
equals()比较对象内容。
可变对象:
-
==总是不相等。 -
equals()根据覆盖的比较逻辑而定。
最佳实践
- 对于基本类型,使用
==比较实际值。 - 对于不可变引用类型(例如 String),使用
equals()比较实际值。 - 对于可变引用类型,根据需要覆盖
equals()方法来比较自定义内容。 - 避免使用
==比较引用类型。











