Object类是java中所有类的超类(根类)。
如:class A extends B
class A
在根类中有几个方法是经常用到的,如hashCode,equals,toString等。
例如:
public class TextObject {
public static void main(String[] args) {
Student student = new Student("Kit", 21, false, "China");
System.out.println(student);//这里要想运行成功,必须重写toString方法
Student compare = new Student("Kit", 21, false, "China");
Student compare1 = new Student("www", 43, true, "Americon");
System.out.println(compare.equals(student));
System.out.println(compare1.equals(student));
}
}
class StudentMessage {
public StudentMessage() {
name = "sky";
age = 22;
sex = true;
address = "China";
}
public StudentMessage(String name, int age,
boolean sex, String address) {
this.name = name;
this.age = age;
this.sex = sex;
this.address = address;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public boolean isSex() {
return sex;
}
public String getAddress() {
return address;
}
private String name;
private int age;
private boolean sex;
private String address;
}
class Student extends StudentMessage {
public Student(String name, int age, boolean sex, String address) {
super(name, age, sex, address);
}
public String toString() {//这里重写了Oject类的toString方法
return this.getName() + " " + this.getAge() + " "
+ this.isSex() + " " + this.getAddress();
}
public boolean equals(Object obj) {//重写Oject类的equals方法
if (this == obj) return true;
if (obj == null) return false;
if (obj instanceof Student) {
Student s = (Student) obj;
return s.getAddress() == this.getAddress() && s.isSex() == this.isSex()
&& s.getAge() == this.getAge() && s.getName() == this.getName();
}
else return false;
}
}
在toString中,如果想在将类型名打印出来(如Student),可这样做:student.getClass().getName(),得到的将会是Student;
在equals方法中,第一,我们要判断是不是同一对象;第二,判断是不是被比较的对象为空;第三,判断两对象的内部是否相同。