首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Java】基础21:顶层父类Object

【Java】基础21:顶层父类Object

作者头像
刘小爱
发布2020-07-30 15:42:21
7100
发布2020-07-30 15:42:21
举报
文章被收录于专栏:零基础自学Java零基础自学Java

在东方神话体系中,人类是如何来的?

是女娲用泥土捏出来的。

在西方神话体系中,人类是如何来的?

是亚当夏娃的后代。

今天要学的Object类在Java里面,就好比是和亚当夏娃一样的存在。

只不过神话终归只是神话,是虚无缥缈的,但是计算机里面,Object类是真真实实存在的。

Object类是所有类的根类,顶层父类,就可以理解成是所有类的祖先,也就是说所有的类最终都会继承至它,包括数组的父类,也是Object类。

用代码证明:

①getClass():得到类名。

②getSuperClass():得到父类名。

③Class是指类,java.lang这是Java里面的一个包,类名是Object。

所以数组的父类也就是Object.。

如果一个类没有特别指定父类,那么默认继承自Object类。

既然Object类是顶层父类,那么按照继承的规则:子类可以调用父类的方法。

Object类中的方法,所有类都可以使用。Object类当中包含的方法有11个。

今天主要学习其中的2个:

一、Object类的toString方法

①创建Person类,没有指定父类,那它默认继承Object类。

②在测试类main方法中,创建对应的person对象并初始化。

③调用toString()方法并打印(注意:Person类中并没有定义toString()方法,它调用的是父类Object的方法)。

④打印结果为一串字符,前面一大串是我自己在开发工具里面创建的包名,就可以理解成文件夹:

  • com是一个总文件夹
  • liuxiaoai946是com里一个文件夹
  • stud02是liuxiaoai946里的一个文件夹
  • commonApi又是stud02里的一个文件夹

那么Person@16e8e0a这串字符到底啥意思呢,这就要看下Object类中的toString()方法是啥样的了。

下图为Object类的toString()方法:

①getClass().getName():得到类的名字,类名是Person。

②Integer.toHexString(hashCode()):hashCode得到的是一个地址值,将这个地址值转化成十六进制,也就是说16e8e0a是一串16进制的数字。

好,现在问题来了,对于开发者来说,地址是没多大的意义的,我们需要的是你能以字符串的形式展现出来而不是给我一串地址。

前面学过String类,知道它打印出来就是一串字符串,而不是一串地址,怎么做到的?

因为它将方法重写了。

下图为String类的toString()方法

String类的父类是Object类,它将父类的toString方法重写了。

所以,当我们新建一个类的时候,一般都会将toString()方法重写,因为地址对于开发者来说意义不大,我们需要的是字符串。

利用开发工具快捷键,Alt+Insert,会自动帮重写toString()方法。

二、Object类的equals方法

作用:判断其他某个对象是否与此对象“相等”。

提到equals方法,不得不提到一个比较运算符“==”。

“==”的作用是啥?

①如果比较的是基本数据类型

“==”比较的是值是否相等。

②如果比较的是引用数据类型

“==”比较的是引用地址是否相同。

那equals方法和“==”之间有什么区别呢?

下图为Object类的equals()方法:

Object类中的equals()方法就是运算符“==”,它们是一回事。

类是引用数据类型,所以Object类中的equals()方法,比较的是引用地址是否相同。

那么问题又来了,String类中的equals方法为何比较的是值是否相等呢?

因为它将equals方法重写了。

所以,同toString方法一样,当我们新建一个类的时候,一般都会将equals方法重写。

利用开发工具快捷键,Alt+Insert,会自动帮重写equals方法。

三、Objects工具类

Objects是Object的工具类,前面也学习过Arrays类是数组的工具类。

工具类有个特点:方法一般都是静态方法。

方法可以直接用类名调用,不用创建实例对象。

①直接用Objects工具类类名就可以调用方法。

②Objects中的equals方法。

③这种判断方式更加安全,不会出现空指针异常。

什么叫空指针异常呢?

就是如果一个对象为空,它调用方法就会出现空指针异常。

如下图:

object1为空,调用equals方法就会报错,如果是用Objects类的方法:

Objects.equals(object1,object2)

这样写就不会出现空指针异常。

总结:
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 刘小爱 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Object类的toString方法
  • 二、Object类的equals方法
  • 三、Objects工具类
  • 总结:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档