看两段代码:
代码1:
1 class person 2 { 3 private String name; 4 private int age; 5 6 public person (String name , int age) 7 { 8 this.name = name; 9 this.age = age; 10 } 11 12 public person(String name) 13 { 14 this.name = name; 15 } 16 } 17 18 public class EqualsMethod 19 { 20 public static void main(String args[]) 21 { 22 person A =new person("李旺"); 23 person B =new person("李旺"); 24 System.out.println(A.equals(B)?"同一个人":"不是同一个人"); 25 } 26 }
代码2:
1 public class OverwriteEquals 2 { 3 public static void main(String args[]) 4 { 5 person A = new person("李旺",25); 6 person B = new person("李旺",25); 7 System.out.println(A.equals(B)?"同一个人":"不是同一个人"); 8 } 9 } 10 11 class person 12 { 13 private String name; 14 private int age; 15 16 public person(String name , int age) 17 { 18 this.name = name; 19 this.age = age; 20 } 21 22 public boolean equals(Object o) 23 { 24 boolean temp = true; 25 person p1 = this; 26 27 if(o instanceof person) 28 { 29 person p2 = (person)o; 30 if(!(p2.name.equals(p1.name)&&p2.age==p1.age)) 31 { 32 temp = false; 33 } 34 } 35 else 36 { 37 temp = false; 38 } 39 40 return temp; 41 } 42 }
输出:
代码1:
代码2:
代码2中的person类是Object的子类(class person就相当于class person extends Object),在代码2中person类对Object类中内置的equals方法进行了覆写。
覆写的目的就是去比较对象中属性的内容,如果采用内置的equals方法,比较的是两个对象实例化后的内存地址,内存地址肯定是不同的。覆写Object类中equals方法的目的就是精确比较两个对象中的属性,是一个常用手段。
这是个人学习的一点想法,表述不一定准确,欢迎批评指正。
原文:https://www.cnblogs.com/leeAndJava-949521/p/14288344.html