“==”与equals的区别

class Cat {
    public Cat(String name) {
        this.name = name;
    }

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

Cat c1 = new Cat("王磊");
Cat c2 = new Cat("王磊");
System.out.println(c1.equals(c2)); // false
String s1 = new String("老王");
String s2 = new String("老王");
System.out.println(s1.equals(s2)); // true
String x = "string";
String y = "string";
String z = new String("string");
System.out.println(x==y); // true
System.out.println(x==z); // false
System.out.println(x.equals(y)); // true
System.out.println(x.equals(z)); // true

1.“==”分析:当比较的是基本数据类型时是值比较,引用型比较时是引用比较。

2.equals()是Object类中的方法,如下:

public boolean equals(Object obj) {
        return (this == obj);
}

可以看到equals本质是引用比较,只是很多类如Integer、String中复写了equals方法,将引用比较转换为了值比较。

 
posted @ 2019-03-11 15:34  code白  阅读(492)  评论(0编辑  收藏  举报