//学习笔记
Object:所有类的根类。
Object是不断抽取而来,具备着所有对象都具备的共性内容。
以下讨论该类中的一些常用方法。
equals方法
指示其他某个对象是否与此对象“相等”。 Object 类的 equals 方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值 x
和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true(x == y 具有值 true)。
class Person extends Object
{
private int age;
Person(int age)
{
this.age = age;
}
}
class Demo
{
}
class ObjectDemo
{
public static void main(String[] args)
{
Person p1 = new Person(60);
Person p2 = new Person(20);
Demo d = new Demo();
System.out.println(p1.equals(p2));
System.out.println(p1.equals(d)); //都是false
}
}
对此方法进行覆盖:
一般都会覆盖此方法,根据对象的特有内容,建立判断对象是否相同的依据。可以进行功能的扩展。
class Person extends Object
{
private int age;
Person(int age)
{
this.age = age;
}
/*
一般都会覆盖此方法,根据对象的特有内容,建立判断对象是否相同的依据。
*/
public boolean equals(Object obj)//Object obj = p2;类型向上提升
{
if(!(obj instanceof Person))
{
// return false;
throw new ClassCastException("类型错误");
}
Person p = (Person)obj; //向下转化
return this.age == p.age;
}
注意:当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode
方法的常规协定,该协定声明相等对象必须具有相等的哈希码。
hashCode方法
返回该对象的哈希码值。
实际上,由 Object 类定义的 hashCode方法确实会针对不同的对象返回不同的整数。(这一般是通过将该对象的内部地址转换成一个整数来实现的,但是 JavaTM 编程语言不需要这种实现技巧。)
class ObjectDemo
{
public static void main(String[] args)
{
Person p1 = new Person(60);
Person p2 = new Person(20);
System.out.println(p1);
System.out.println(Integer.toHexString(p1.hashCode()));
}
覆盖之,实现自定义的方法:
public int hashCode()
{
return age;
}
getClass方法
返回: 表示此对象运行时类的 Class 对象。
Class clazz1 = p1.getClass(); //取得类文件对象
Class clazz2 = p2.getClass();
System.out.println(clazz1==clazz2); //ture
System.out.println(clazz1.getName()); //之前的person类
toString方法
返回该对象的字符串表示。通常, toString
方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。
Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at
标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:getClass().getName() + ‘@’ + Integer.toHexString(hashCode())