equals 是在Object方法中定义的,直接用==来实现的,如果想比较具体的值,需要重写。
重写equals方法
1 User.java 2 3 public class User { 4 5 String name; 6 7 public String getName() { 8 return name; 9 } 10 11 public void setName(String name) { 12 this.name = name; 13 } 14 User(String name){ 15 this.name= name; 16 } 17 18 @Override 19 public String toString() { 20 return "User [name=" + name + "]"; 21 } 22 23 @Override 24 public int hashCode() { 25 final int prime = 31; 26 int result = 1; 27 result = prime * result + ((name == null) ? 0 : name.hashCode()); 28 return result; 29 } 30 31 @Override 32 public boolean equals(Object obj) { 33 if (this == obj) 34 return true; 35 if (obj == null) 36 return false; 37 if (getClass() != obj.getClass()) 38 return false; 39 User other = (User) obj; 40 if (name == null) { 41 if (other.name != null) 42 return false; 43 } else if (!name.equals(other.name)) 44 return false; 45 return true; 46 } 47 48 }
测试重写好的方法
1 Test.java 2 3 public class Test { 4 5 public static void main(String[] args) { 6 7 8 User uz = new User("张三"); 9 User ul = new User("张三"); 10 11 12 System.out.println(uz.equals(ul)); 13 } 14 }