Java的Object类详解(入门必备)


为什么要专门研究一下Object类,因为我们日常定义的类都是Object类的子类,也都具备Object类的所有特性。因此,我们非常有必要掌握Object类的用法。

基本特性

Object 类是所有 Java 类的根基类,也就意味着所有的 Java 对象都拥有Object 类的属性和方法。在这里插入图片描述

java.lang.Object的常用类

下面是在日常开发当中遇到的Object的常用类:
在这里插入图片描述

接下来对重点部分进行讲解:

toString() 方法

看源码说话
在这里插入图片描述
由源码可知,默认会返回“类名+@+16进制的 hashcode ”。
也就是说,在打印输出或者用字符串连接对象时,会自动调用该对象的 toString() 方法。
所以,我们一般都会重写它,例如下面这样:
在这里插入图片描述

== 和 equals 方法

==是关系运算符,equals()是方法,同时他们的结果都返回布尔值;

“==”使用情况如下
(1)基本类型,比较的是值
(2)引用类型,比较的是地址
(3)不能比较没有父子关系的两个对象

equals()方法使用如下
(1)系统类一般已经覆盖了equals(),比较的是内容。
(2)用户自定义类如果没有覆盖equals(),将调用父类的equals (比如是Object),而Object的equals的比较是地址(return (this == obj);)
(3)用户自定义类需要覆盖父类的equals()

注意:Object的==equals比较的都是地址,作用相同
==表示比较双方是否相同。如果是基本类型则表示值相等,如果是引用类型则表示地址相等,即同一个对象。

Object类中定义有:public boolean equals(Object obj)方法,提供定义“对象内容相等”的逻辑。比如,在我们公安系统中认为id相同的人就是同一个人,学籍系统中认为学号相同的人就是同一个人。

Object的equals方法默认就是比较两个对象的hashcode,是同一个对象的引用时返回true,否则返回 false。但是我们可以根据我们自己的要求重写equals方法。

自定义重写equals方法的示例:
在这里插入图片描述

super() 关键字

super 可以看做是直接父类对象的引用。可以通过 super 来访问父类中被子类覆盖的方法或属性。

使用 super 关键字调用普通方法,语句没有位置限制,可以在子类中随便调用。

在一个类中,若是构造方法的第一行代码没有显示的调用 super(…)this(…);那么 Java 默认都会调用 super(),含义是调用父类的无参构造方法。这里的 super() 可以省略。

示例:
在这里插入图片描述

继承树追溯

  • 属性/方法查找顺序(比如:查找变量 var )
    (1)查找当前类中有没有属性 var
    (2)依次上溯每个父类,查看每个父类中是否有 var ,直到 Object
    (3)如果没找到,则出现编译错误
    上面三个步骤,只要找到 v 变量就终止整个过程
  • 构造方法调用顺序
    构造方法第一句总是:super(…)来调用父类对应的构造方法。所以,流程就是:先向上追溯到 Object ,然后依次向下执行类的初始化块和构造方法,直到当前子类为止。

注意: 静态初始化块调用顺序,与构造方法调用顺序一样,不再重复

下面写个demo来演示一下继承条件下构造方法的执行过程
在这里插入图片描述

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值