Java的Object类以及常用方法

//学习笔记
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())

猜你喜欢

转载自blog.csdn.net/z714405489/article/details/82774042