Object类的介绍
1、Object类是所有类的根类。
2、Object是不断抽取而来,具备着所有对象都具备的共性内容。
例子:
class Fu //这里不写extends Object也是隐式的继承Object类。
{
Fu()
{
super();
}
}
class Zi extends Fu
{
Zi()
{
super();
}
}
class ObjectDemo()
{
public static void main(String[] args)
{
new Zi();
}
}
重要方法介绍:
1、equals(Object obj):判断两个对象是否相等。返回值类型为boolean型。
特点:
Object类的equals方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值x和y,当且仅当x和y引用同一个对象时,此方法才返回true;
演示:
class person
{
private int age;
Person(int age)
{
thid.age=age;
}
}
class Demo
{
}
class ObjectDemo1
{
public static void main(String[] args)
{
Person p1 = new Person(20);
Person p2 = new Person(20);
Person p3 = p1;
Demo d = new Demo();
System.out.println(p1==p2);//false;
System.out.prinln(p1.equals(p2));//false;
System.out.println(p1.equals(p3));//true;比较对象的地址值是否相等,相等true;不相等false;
System.out.println(p1.equals(d));//false;
}
}
equals方法的覆盖;
class person
{
private int age;
Person(int age)
{
thid.age=age;
}
//比较Person的年龄,是否是同龄人;
/*public boolean compare(Person p){
return this.age == p.age;
}*/
/*
一般都会覆盖此方法,根据对象的特有内容,建立判断对象是否相同的依据。
*/
public boolean equals(Object obj)
{
if(!(obj istanceof Person))//进行健壮性判断;
{
//return false;
throw new ClassCastException("类型错误!");
}
Person p = (Person)obj;//添加这个代码,进行类型的向下转型;
return this.age == p.age;
}
//hashCode方法的覆盖;
public int hashCode()
{
return age;
}
}
class Demo
{
}
class ObjectDemo1
{
public static void main(String[] args)
{
Person p1 = new Person(20);
Person p2 = new Person(20);
System.out.prinln(p1.equals(p2));//false;
//这是会出现错误。因为,将p2进行了类型提升为了Object类型。就会屏蔽该类的特有属性。
}
}
2、hashCode() 返回该对象的哈希值。
上面的主函数中定义:
System.out.println(p1);
System.out.println(p1.hashCode());
以上前面一个结果的后半部分和第二个的结果相同。定义中,每一个对象都有唯一的一个hash值。
3、getClass() 返回Object的运行时类。返回所属的字节码文件对象。
字节码类Class不能自己创建。类加载后,在堆内存中会自动生成Class字节码文件对象。
内存中的任意一个对象,都有自己的所属字节码文件对象。
例:
class Person
{
private int age;
}
class ObjectDemo1
{
public static void main(String[] args)
{
Person p1 = new Person(20);
Person p2 = new Person(20);
Class clazz1 = p1.getClass();
Class clazz2 = p2.getClass();
System.out.println(clazz1.equals(clazz2));//true;
System.out.println(clazz1.getName());//Person;
}
}
4、toString() 返回该对象的字符串表示。
任何一个对象,如果你想建立一个特有的字符串表现形式,就覆盖toString()方法。
例:
class Person
{
private int age;
public String toString()
{
return "Person :"+age;
}
}
class ObjectDemo1
{
public static void main(String[] args)
{
Person p1 = new Person(20);
Person p2 = new Person(20);
System.out.println(p1);
System.out.println(p1.getClass().getName()+"@"+Integer.toHexString(p1.hashCode()));
}
}