【发布时间】:2015-11-05 18:31:37
【问题描述】:
为什么有人会对非字符串对象使用 .equals(Object) 方法而不是“==”?就因为我们可以覆盖 .equals(Object)?
【问题讨论】:
-
是的,当 逻辑上 对象根据要求相同或不同时。
为什么有人会对非字符串对象使用 .equals(Object) 方法而不是“==”?就因为我们可以覆盖 .equals(Object)?
【问题讨论】:
"==" 比较两个对象的身份(内存地址)。如果你有两个 person 对象,他们有相同的姓氏、相同的年龄、性别……,那么他们应该是同一个人。但是由于您在代码中分别创建了两个人对象,因此当您使用“==”时,您会得出结论它们是两个不同的人。但是,如果您覆盖“等于”,那么您可以断定他们是同一个人。
查看“Effective java”(如果不是最好的话,也是最好的 Java 书籍之一)。这方面有一些不错的项目。
【讨论】: