JavaSE笔记6.12-面向对象-Object类

1. 概述

类Object是类层次结构根类,每个类都使用Object作为超类。
所有对象(包括数组)都实现这个类的方法。

class Demo //extends Object
{
	//除了有默认构造函数
	//还继承了类Object的所有方法
}

这里主要总结Object类中的三个常用方法:equals()、toString()、hashCode()。

2. equals()
2.1 基本应用

比较的是地址值

boolean equals(Object obj)
指示一些其他对象是否等于此

class Demo //extends Object
{
	//除了有默认构造函数
	//还继承了类Object的所有方法
}

class  ObjectDemo
{
	public static void main(String[] args) 
	{
		Demo d1=new Demo();
		Demo d2=new Demo();   //d2和d1的内存空间不同
		Demo d3=d1;           //d3和d1的内存空间相同
           
           //equals的作用与==相同
		System.out.println(d1.equals(d2));
		System.out.println(d1==d2);
		System.out.println(d1.equals(d3));
		System.out.println(d1==d3);
	}
}

在这里插入图片描述

2.2 扩展应用

复写Object中的equals功能:
Object类中已经提供了对对象是否相同的比较方法,
如果自定义类中也有比较功能,没有必要重新定义;
只要沿袭父类中的功能,建立自己特有的比较内容即可。
这就是覆盖

用法:覆盖重写+利用多态+向下转型+判断子类实例

class Demo //extends Object
{
	private int num;
	Demo(int num)
	{
		this.num=num;
	}

	//利用多态
	public boolean equals(Object obj)  //Object obj=new Demo();
	{
		//判断是哪个子类的实例:用关键字instanceof
		if(!(obj instanceof Demo))
			return false;
		Demo d=(Demo)obj;  //向下转型
		return this.num==d.num;
	}
}

class Person
{
}

class  ObjectDemo
{
	public static void main(String[] args) 
	{
		Demo d1=new Demo(4);
		Person p=new Person();

		System.out.println(d1.equals(d2));//Object obj=new Person()
        System.out.println(d1.equals(d3));
		System.out.println(d1.equals(p)); 
	}
}

输出结果是:
true
false
false

3. toString()
3.1 基本应用

返回对象的字符串表示形式

  • toString()

public String toString()
该类方法返回一个等于下列值的字符串
getClass().getName()+’@’+Integer.toHexString(hashCode())

  • hashCode()

int hashCode()
返回对象的哈希码值

  • getClass()

类<?> getClass()
返回此object的运行时类

  • getName()

String getName()
返回由类对象表示的实体(类、接口、数组类、原始类型或空白)的名称,作为String

class Demo //extends Object
{
    private int num;
    Demo(int num)
    {
        this.num=num;
    }
}

class  ObjectDemo
{
    public static void main(String[] args)
    {
        Demo d1=new Demo(4);
        System.out.println(d1.toString());
        System.out.println(d1.hashCode());
        System.out.println(Integer.toHexString(d1.hashCode()));

        Class c=d1.getClass();
        System.out.println(c.getName());
    }
}

输出结果是:
Demo@5451c3a8
1414644648
5451c3a8
Demo

3.2 扩展应用

复写Object中的toString功能:

class Demo //extends Object
{
    private int num;
    Demo(int num)
    {
        this.num=num;
    }
    public String toString()  //复写toString方法
    {
        return "demo:"+num;
    }
}

class  ObjectDemo
{
    public static void main(String[] args)
    {
        Demo d1=new Demo(4);
        System.out.println(d1.toString());
    }
}

输出结果是:
demo:4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值