Object类简述

目录

Object类概述

1、hashCode()

2、toString()

3、equals()


Object类概述

什么是Object类?Object重要吗?

Object是所有类的父类,不管你写的类有多复杂,它都是Object的子类。Object的身影贯穿你学习Java的整条路线,不可谓不重要。

当你写出这样的代码时:

编译器会给你自动补全为:

只要是类,那么必然有它存在的意义,Object类存在的意义很大程度上就是为了让他的子类们重写它的各种方法,而成员变量?Object没有成员变量。如图可以看到,除了一个static的静态代码块,其他全是标志为m的方法,没有一个成员变量。

所以说,我们的重点就是学习Object的各种方法。

1、hashCode()

为什么要先学hashCode()呢?其实是为了toString()铺垫罢了

hashCode()是将一个对象的地址封装起来返回一个数

他其实是用C++实现的,但是实现过程太过复杂,如果你想深究,请参考这位大佬的博客:Object.hashCode()的实现

2、toString()

如果说,hashCode()是包装地址,那么toString()就是包装hashCode()。

我们调用toString()方法,打印出我们不认识的符号,这就是toString()的作用了。

点进toString()的源码:

你会发现,toString()其实是调用了hashCode()方法,返回一个更加详细的类的信息。

(1554874502的是十六进制是5cad8086)

初学对象时你会不会有这样的疑惑,我写了一个student类,输出它却输出了一大堆符号?

你看它像不像刚刚讲过的toString()方法产生的字符串?

所以我们可以知道,输出一个对象,默认调用toString()方法,你没有重写toString()方法,它就会使用从Object类继承过来的toString(),输出一大串你不认识的符号。

3、equals()

这个方法是比较两个对象是否相等的。

Object类的equals()方法简单粗暴:

管你三七二十一,地址不相等直接就返回不相等。

当我们实现了一个Student类,使用equals()方法时,其实调用了Object的equals()方法,

我们知道,new出来的两个对象一定不相等,所以会出现这种情况:

它们两个分明相等啊,可是输出了false,就是因为你没有自己重写equals()方法

而对于JAVA给我们提供的很多类而言,它们都重写了Object.equals()方法。

例如:String

str1 == str2 直接比较两个对象的地址

str1.equals(str2) 按照你指定的规则比较两个类。

既然是规则,那就是人制定的,所以对于equals()方法,你可以随意玩:

(其实对于新手而言,学到这里已经够了。下面的内容,其他的方法都涉及到接口、反射、线程等)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值