==和equals()的不同点

两者都可以用于对象的比较。"=="用于比较两个对象的内存地址值(引用值)是否相等,equals()方法用于比较两个对象的内容是否一致。

String str1 = new String("java");

String str2 = new String("java");

String str3 = str2;

str1和str2的内容完全一样,但是它两在堆内存中处于不同的内存位置,内存地址不同,所以str1==str2是FALSE!str1.equals(str2)是TRUE!

 

然而还需要注意的是,若对象类型的类为Object类或者Object类的子类,那么则需要覆写Object类中的equals方法才能准确的对两个对象内容进行比较,不然比较的是两个对象的地址比较。

//没有覆写equals()方法
class Person{
    private String name;
    private int age;
    public Person(String name,int age){
        this.name = name;
        this.age = age;
    }
}

class Object {
    public static void main(String[] args) {
        Person p1 = new Person("张三",12);
        Person p2 = new Person("张三",12);
        System.out.println(p1.equals(p2)?"是同一个人":"是两个人");        
    }
}

程序运行结果为:是两个人。此时equals()就相当于"=="

 

posted on 2017-06-06 10:05  volcan1  阅读(107)  评论(0编辑  收藏  举报

导航