equals()方法;
equals方法是Object类中的方法;Object是所有类的祖宗,所以所有类都有equals()方法;
boolean equals(Object obj);
equals方法是比较两个对象是否相等;对象为引用数据类型,比较的是内存地址;
public class Person { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
public class Test1 { public static void main(String[] args) { Person p1=new Person(); p1.setName("张三"); System.out.println(p1);//p1内存地址 Person p2=new Person();
p2.setName("张三"); System.out.println(p2);//p2内存地址boolean b=p1.equals(p2); System.out.println(b); } }//运行结果:com.zs.demo5.Person@15db9742 // com.zs.demo5.Person@6d06d69c // false
可以看出,虽然p1与p2内用相同,但是内存地址却不同,所以比较结果为false;很多情况下我们是要比较他们的内容是否相同,所以需要重写equals方法;
public class Person { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } @Override public boolean equals(Object obj) {//重写equals方法 if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Person other = (Person) obj; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; return true; } }
public class Test1 { public static void main(String[] args) { Person p1=new Person(); p1.setName("张三"); System.out.println(p1);//p1内存地址 Person p2=new Person();
p2.setName("张三"); System.out.println(p2);//p2内存地址boolean b=p1.equals(p2); System.out.println(b); } } //运行结果:com.zs.demo5.Person@bd308 // com.zs.demo5.Person@1f // true
toString()方法;输出语句中调用的是toString方法,上例中,输出的是内存地址,当需要看对象中的值的时候,就重写toString()方法;
public class Person { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() {//重写toString()方法 return "Person [name=" + name + "]"; } }
public class Test1 { public static void main(String[] args) { Person p1=new Person(); p1.setName("张三"); System.out.println(p1);//p1内存地址 Person p2=new Person();
p2.setName("张三"); System.out.println(p2);//p2内存地址 } }//运行结果:
//Person [name=张三]
//Person [name=张三]
Java学习笔记13(equals()方法;toString()方法)
原文:https://www.cnblogs.com/Zs-book1/p/10554856.html