“==”与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方法,将引用比较转换为了值比较。