Object类
总结
(1)对于字符串(变量)来说,==和equals是比较字符串中所包含的内容
(2)对于非字符串(引用型变量)来说,==和equals都是比较两个对象在堆内存中的首地址
(3)对于new String()来说,==是比较两个对象在内存中的首地址;对于StringBuffer来说,equals也是比较两个对象在内存中的首地址
- toString方法
package com.Object.util;
/*
* @author Administrator
* @version 1.0
*/
public class ObjectDemo {
//成员变量
private String name;
private int age;
//构造函数
public ObjectDemo(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//重写toString()方法
public String afterToString() {
return this.name;
}
}
- equals()方法
package com.Object.util; /* * @author Administrator * @version 1.0 */ public class Person { //成员变量 private String name; private String number; //构造函数 public Person(String name, String number) { this.name = name; this.number = number; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getNumber() { return number; } public void setNumber(String number) { this.number = number; } //重写equals()方法 public Boolean afterEquals(Object obj) { if(this == obj) { return true; } if(obj instanceof Person) { Person person = (Person) obj; if(this.name == person.name && this.number == person.number) { return true; } }else { System.out.println(obj.getClass()); } return false; } }
package com.Object.util; /* * @author Administrator * @version 1.0 */ public class Teacher { //成员变量 private String name; private String number; //构造函数 public Teacher(String name, String number) { this.name = name; this.number = number; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getNumber() { return number; } public void setNumber(String number) { this.number = number; } }
- toString()和equals()方法的重写前后的实现
package com.Object.util; /* * @author Administrator * @version 1.0 */ public class ObjectTest { public static void main(String[] args) { //Object类的toString()方法 ObjectDemo od = new ObjectDemo("Administrator", 24); //重写之前的toString()方法 System.out.println(od.toString()); //com.Object.util.ObjectDemo@70dea4e //重写之后的toString()方法 System.out.println(od.afterToString()); //Administrator //Object类的equals()方法 Person person1 = new Person("人","123"); Person person2 = new Person("人","123"); Teacher teacher = new Teacher("人","123"); //重写之前的equals()方法 System.out.println(person1.equals(person2)); //false //重写之后的equals()方法 System.out.println(person1.afterEquals(person2)); //true System.out.println(person1.afterEquals(teacher)); //class com.Object.util.Teacher //false } }