Object类与它的一些方法
时间:2022-07-28
本文章向大家介绍Object类与它的一些方法,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一、Object类概述
首先呢,它是Java中所有类的基类,Java中所有的类都是间接或者直接继承Object类,Object类的
引用数据类型变量可以保存Java中任意数据类型空间的首地址。
二、Object类内规定了几个方法
1.String toString();
当前对象建议String类型描述。默认情况是当前类所属包名.类名@十六进制内存地址
如果对于数据类型展示有要求,可以重写toString方法,在展示的方法中会默认执行
toString方法。
目前大家展示数据时,需要考虑使用的方法,可以通过Sout方法直接展示出对应的对象内
容。
2.boolean equals(Object obj);
比较方法,判断两个对象是否一致,Object类内默认情况下比较的方式是地址比较。
两个对象地址一致,表示肯定是相同对象。如果我们期望修改equals比较规则,可以
在当前类内重写。
代码中存在一些情况,需要比较的是两个对象中保存的内容是一致,这种时候就需要重写equals方法
重写equals方法 1. 判断两个对象是不是同一个对象。如果调用方法的类对象和传入参数类对象 地址一致,那就是同一个对象,返回true,搞定!!!
2. equals方法参数是Object类型,那也就是说任何类型的数据都可以作为参数。
两个数据类型不一致,是否需要进行比较操作。
判断数据类型是否一致
使用关键字 instanceOf,同数据类型继续运行,非同类型,结束判断返回false
格式:
类对象 instanceOf 类名
3. 判断对象中保存的数据
@Override
public boolean equals(Object obj) {
// 1. 判断是不是同地址对象
if (this == obj) {
return true;
}
// 2. 类型是否一致
if (!(obj instanceof Student)) {
return false;
}
// 数据类型强制转换
Student stu = (Student) obj;
return this.id == stu.id
// this.name.equals(stu.name) 该equals方法是String类equals方法
&& this.name.equals(stu.name)
&& this.age == stu.age
&& this.gender == stu.gender;
}
【注意】 Java中规定,如果两个对象的equals比较方法结果为true,要求hashCode值必须 一致。
3.int hashCode();
内存中当前对象的唯一索引值,默认情况下是当前对象所处空间首地址的十进制展示。
在Object类内,hashCode方法,返回的内容是当前对象的空间首地址十进制展示方式。 当前类重写equals方法之后,两个当前类对象比较结果为true,那么要求这两个对象的hashCode必须一致!!! hashCode使用有一个唯一原则。 一般会参考参与equals比较的所有成员变量来组成对应的hashCode,这里会使用到一些Java中提供的计算哈希值的方法。
hashCode使用未进行重写的情况下,会使用地址作为hashCode对应的数据,重写之后,不再使用地址。重写之后hashCode 不对应当前对象所在地址。
@Override
public int hashCode() {
// 这里通过Objects 工具类内的hash方法,传入所有参与equals比较的成员变量
// 得到对应的hashCode值
return Objects.hash(id, name, age, gender);
}
- Angular企业级开发(10)-Smart Table插件开发
- 安装Ubuntu时分区选择
- linux系统下安装两个或多个tomcat
- JS魔法堂:不完全国际化&本地化手册 之 实战篇
- scala + intellij idea 环境搭建及编译、打包
- Angular企业级开发(2)-搭建Angular开发环境
- JS魔法堂:不完全国际化&本地化手册 之 拓展篇
- 使用jQuery的animate方法制作滑动菜单
- jenkins 入门教程(下)
- CSS3制作心形头像
- CSS魔法堂:重拾Border之——不仅仅是圆角
- scala 学习笔记(01) 函数定义、分支、循环、异常处理、递归
- java之log4j的配置
- scala 学习笔记(02) 元组Tuple、数组Array、Map、文件读写、网页抓取示例
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 搭建NFS Server
- Paxos 分布式必问的内容,没有之一
- Java进阶训练营 第一周JVM 预习笔记
- LeetCode905. 按奇偶排序数组 题解
- 试用 Azure Sql 数据库
- (九)整合spring cloud云服务架构 - commonservice-config配置服务搭建
- SessionStorage、LocalStorage详解
- 草率了,又一个Maven打包的问题
- MySQL案例:count(*)和count(1)的效率问题
- 监控、链路追踪、日志这三者有何区别?
- 预训练模型超全知识点梳理与面试必备高频FAQ
- 【论文投稿】SOTA论文也未必能被接收,谷歌科学家Eric Jang谈顶会审稿标准
- 【EMNLP2020】超越MLM,微软打造全新预训练任务
- snmp协议的相关资料
- Nodejs全栈入门-慕课网