news 2026/10/14 19:10:49

Java Object类 <equals,hashCode>

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java Object类 <equals,hashCode>
  • 一.equals
  • 二. hashCode

一.equals

Object是Java默认提供的⼀个类。Java⾥⾯除了Object类,所有的类都是存在继承关系的。默认会继承Object⽗类。即所有类的对象都可以使⽤Object的引⽤进⾏接收。

1.equals 默认代码

不重写的情况下继承的是父类的比较方法。
比如: 这时候对比的是内部地址

publicbooleanequals(Objectobj){return(this==obj);}

这时候就需要去重写equals方法

比如:现在比较name和age

importjava.util.Objects;publicclassequals{staticclassStudent{//两个比较对象publicStringname;publicintage;//结构方法publicStudent(intage,Stringname){this.age=age;this.name=name;}//这里根据实际情况重写equals@Overridepublicbooleanequals(Objecto){//这里是防止空指针,和类型不同if(o==null||getClass()!=o.getClass())returnfalse;//因为用的是Object接收所以需要强制类型转换Studentstudent=(Student)o;returnage==student.age&&Objects.equals(name,student.name);}}publicstaticvoidmain(String[]args){Studentstudent1=newStudent(5,"lisi");Studentstudent2=newStudent(5,"lisi");//比较System.out.println(student1.equals(student2));}}

大部分实际情况都是需要重写的equals

equals 五大特性

  1. 自反性:x.equals(x)→ true
  2. 对称性:x.equals(y) = y.equals(x)
  3. 传递性:x.equals (y)=true,y.equals (z)=true,则 x.equals (z)=true
  4. 一致性:只要对象属性不变,多次调用 equals 返回结果不变
  5. 非空性:x.equals(null)一定返回 false

二. hashCode

## 2.1 hashCode 没重写前也是继承的Object的原生代码:

publicnativeinthashCode();
  • native本地方法,JVM 底层实现。
  • 默认返回:对象在堆内存的哈希值(不是内存地址,但和地址相关)。

2.2 相等的对象哈希码一定相同;哈希码相同对象不一定相等。

如果两个对象equals() == true,它们的 hashCode 必须相等。
重写 equals,就必须重写 hashCode。

2.3重写hashCode的写法

@OverridepublicinthashCode(){returnObjects.hash(name,age);}

equals和hashCode 一起重写的 写法(快捷键)

1 右键 点 生成

2 点击 equals,hashCode 方法

3 然后一直点击下一步就ok

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/14 19:09:46

校招面经:AI 应用开发工程师,技术栈与项目踩坑全解析

校招面经:AI 应用开发工程师,技术栈与项目踩坑全解析 作者:某后端转 AI 应用选手 面试场次:19 场(含字节、美团、京东、蚂蚁、微软系 AI 岗) 最终去向:某大厂 AI 应用开发岗 文章定位&#xff1…

作者头像 李华
网站建设 2026/10/14 19:09:26

小动物代谢监测系统:原理、操作与选型指南

1. 小动物代谢监测系统概述在生物医学研究领域,小动物代谢监测系统已经成为实验室不可或缺的重要工具。这套系统能够实时、精确地记录小鼠等实验动物的代谢参数,为科研人员提供关键的生理数据支持。我使用过多款不同品牌的代谢监测设备,从基础…

作者头像 李华
网站建设 2026/10/14 19:08:30

从零搭建校园二手交易系统:Vue2 + SpringBoot 4.x 全栈实战

文章目录📖 前言🎯 项目介绍核心功能界面预览🛠 技术栈🏗 系统架构项目结构💾 数据库设计user 用户表product 商品表orders 订单表🔧 关键技术点1. 组件化开发2. Vue Router 路由守卫3. Axios 二次封装4. S…

作者头像 李华
网站建设 2026/10/14 19:07:36

Android Recovery与OTA安装机制深度解析:从启动链路到差分升级

1. 从一次OTA升级失败说起:Recovery到底在干什么很多人第一次接触Recovery,都是因为设备OTA升级失败卡在开机界面,或者手动进入恢复模式后不知道那些菜单项背后发生了什么。我最早接触这块是在一个定制设备项目上,当时系统推送了一…

作者头像 李华
网站建设 2026/10/14 19:07:30

什么样的标识可以申请注册商标?注册商标需要具备什么核心条件?

商标注册的准入标准、禁用红线,核心都源于《中华人民共和国商标法》的基础条款。什么样的标识可以申请注册商标?注册商标需要具备什么核心条件?哪些标志是法律明确禁止使用的?这些商标实务中最基础的问题,答案都在以下…

作者头像 李华
网站建设 2026/10/14 19:07:25

算力机房建设:从规划到落地的完整指南

1. 引言随着人工智能、大数据和云计算技术的快速发展,算力已成为数字经济的核心生产力。算力机房作为承载算力基础设施的重要载体,其建设质量直接关系到上层业务的稳定运行和扩展能力。本文将从选址规划、机房设计、供配电系统、制冷系统、网络架构、安全…

作者头像 李华