String#equals()
和 Object#equals()
在Java中扮演了不同的角色,尽管它们都用于比较两个对象是否相等,但它们之间的主要区别在于它们的实现细节和默认行为。
Object#equals()
Object#equals(Object obj)
是Java中所有类的超类(即java.lang.Object
)中的一个方法。- 默认情况下,
Object
类中的equals()
方法是比较两个对象的引用是否相同(即它们是否是同一个对象)。这意呀着,除非你在自己的类中覆盖了(Override)这个方法,否则使用equals()
会比较两个对象的内存地址是否相同。 - 由于这个默认行为在很多情况下并不是我们想要的(比如,比较两个
String
对象的内容是否相同,而不是它们是否是同一个String
对象),所以许多类(如String
、Integer
等)都覆盖了equals()
方法以提供更有用的比较逻辑。
String#equals()
String#equals(Object anObject)
是String
类对Object
类中equals()
方法的一个覆盖实现。- 在
String
类中,equals()
方法被覆盖以比较两个字符串的内容是否相同,而不是比较它们是否是同一个对象。这意味