Object类—复写equals方法,hashCode方法,toString方法

时间:2021-12-16 16:13:51
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;
}
/*
public int hashCode()//复写hashcode()
{
return age;
}
*/

public String toString()//复写toString()
{
return "Person :"+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(p1.equals(p2)); equals()方法,比较的是地址值。
}
}