Java的Object类详解(入门必备)
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来演示一下继承条件下构造方法的执行过程
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 博客由Hexo转向Hugo
- 屏蔽掉向日葵的有效方法
- 帝国cms在防止内容采集方面做的工作
- 记录一次有意思的溯源
- 个人博客图片的解决方案
- types 和 @types 是什么?
- 一次绕过waf进行xss的经历
- opencv+python制作硬核七夕礼物
- 身份验证器是如何验证我们的身份?
- 谷歌开源NLP模型可视化工具LIT,模型训练不再「黑箱」
- MongoDB 案例:Document failed validation 错误
- 利用GoogleAppsScript自动回复短信实现保号
- 用php来查询graphql
- 利用树莓派的摄像模块实现“扫码枪”
- n ../../node_modules/@storybook/channels/dist/index.d.ts:25:9 - error TS1086: An accessor cannot ...