Java equals用法
package www.wang.demo01;
public class demo01 {
public static void main(String[] args) {
Person p1 = new Person("海绵宝宝");
Person p2 = new Person("海绵宝宝");
System.out.println(p1.equals(p2));
System.out.println(p1.name.equals(p2.name));
String s1 = new String("海绵宝宝");
String s2 = new String("海绵宝宝");
System.out.println(s1.equals(s2));
}
}
class Person{
public String name;
public Person(String name) {
this.name = name;
}
}
##########结果##########
false
true
true
解析
- System.out.println(p1.equals(p2));这句话实际上是比较的p1和p2的地址。
因为p1和p2是Person类的,Person类没有重写equals方法,所以这里用的equals方法是Object类中的,Object类的equals是比较两个对象是否相等。所以这是false。
- System.out.println(p1.name.equals(p2.name));
p1.name和p2.name是字符串,String已经把equals重写了,比较的就是文字内容是否相等,所以是true。
- System.out.println(s1.equals(s2));
解释与以上一样,结果为true。