首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用.equals()和==运算符比较两个对象

使用.equals()和==运算符比较两个对象
EN

Stack Overflow用户
提问于 2012-11-15 05:35:08
回答 11查看 413.5K关注 0票数 89

我用一个String字段构造了一个类。然后,我创建了两个对象,并使用==运算符和.equals()对它们进行了比较。下面是我所做的:

代码语言:javascript
复制
public class MyClass {

    String a;

    public MyClass(String ab) {
        a = ab;
    }

    public boolean equals(Object object2) {
        if(a == object2) { 
            return true;
        }
        else return false;
    }

    public boolean equals2(Object object2) {
        if(a.equals(object2)) {
            return true;
        }
        else return false;
    }



    public static void main(String[] args) {

        MyClass object1 = new MyClass("test");
        MyClass object2 = new MyClass("test");

        object1.equals(object2);
        System.out.println(object1.equals(object2));

        object1.equals2(object2);
        System.out.println(object1.equals2(object2));
    }


}

编译后,结果显示两次false。如果两个对象有相同的字段- "test“,为什么是false?

EN

回答 11

Stack Overflow用户

发布于 2015-07-15 19:38:20

您应该重写equals

代码语言:javascript
复制
 public boolean equals (Object obj) {
     if (this==obj) return true;
     if (this == null) return false;
     if (this.getClass() != obj.getClass()) return false;
     // Class name is Employ & have lastname
     Employe emp = (Employee) obj ;
     return this.lastname.equals(emp.getlastname());
 }
票数 19
EN

Stack Overflow用户

发布于 2016-02-23 04:25:04

比较两个对象的最好方法是将它们转换成json字符串,然后比较字符串,这是处理复杂的嵌套对象、字段和/或包含数组的对象时最简单的解决方案。

示例:

代码语言:javascript
复制
import com.google.gson.Gson;


Object a = // ...;
Object b = //...;
String objectString1 = new Gson().toJson(a);
String objectString2 = new Gson().toJson(b); 

if(objectString1.equals(objectString2)){
    //do this
}
票数 7
EN

Stack Overflow用户

发布于 2012-11-15 05:38:38

看起来equals2只是在调用equals,所以它会给出相同的结果。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13387742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档