Object:所有类的根类。
Object是不断抽取而来,具备着所有对象都具备的共性内容。
class Person extends Object { private int age; Person(int age) { this.age = age; } /* 老方法:比较Person的年龄。是否是同龄人 */ // public boolean compare(Person p) { return this.age == // p.age; } /* 新方法:一般都会覆盖此方法,根据对象的特有内容,建立判断对象是否相同的依据。(常用复写equals) */ public boolean equals(Object obj)// Object obj = p2;隐藏着向上转型 { // 健壮性判断 if (!(obj instanceof Person)) { throw new ClassCastException("类型错误"); } Person p = (Person) obj;// 向下转型,否则无法调用Person的属性age return this.age == p.age; } /* 复写hashcode() */ // public int hashCode() { // return age; // } /* 复写toString() */ // public String toString() { // return "Person:" + "age=" + age; // } } class ObjectDemo { public static void main(String[] args) { Person p1 = new Person(60); Person p2 = new Person(20); // System.out.println(p1.equals(p2)); // System.out.println(p1);// 默认调用p1.toString // System.out.println(Integer.toHexString(p1.hashCode())); /* 是不是同一个类 */ // Class clazz1 = p1.getClass(); // Class clazz2 = p2.getClass(); // System.out.println(clazz1 == clazz2); // System.out.println(clazz1.getName());// Person // System.out.println(p1.toString());// Person@61de33 // System.out.println(p1.getClass().getName() + "$" + // Integer.toHexString(p1.hashCode()));// Person$61de33 // System.out.println("==:" + (p1 == p2)); // System.out.println("equals:" + p1.equals(p2)); // // equals()方法,比较的是地址值。对于非字符串变量,equals比较的是内存的首地址,这时候和==是一样的,即比较两边指向的是不是同一个对象。 } }