软件构造——equals方法与hashcode方法

【PCIe 总线及设备入门学习专栏 3.2.2 -- PCIe 中什么是 SR-IOV】 SR-IOV(Single Root I/O Virtualization)是 PCIe 规范中的一种技术,允许物理 PCIe 设备(称为 Physical Function, PF)虚拟化为多个虚拟设备(称为 Virtual Functions, VFs),使多个操作系统或虚拟机能够共享同一个物理设备。SR-IOV:一种 PCIe 虚拟化技术,允许将一个物理 PCIe 设备虚拟化为多个虚拟设备。:物理设备的主要管理接口。:PF 的轻量级副本,分配给虚拟机或操作系统。 阅读详情

一.等价性

抽象函数AF:内部表示->抽象表示的映射。
我们可以基于抽象函数AF定义ADT的等价操作。
等价性是我们定义的自反,对称,传递关系。判断对象是否相等。

二.不可变类型的等价性

我们可以利用AF,若AF映射到的抽象值相等,那么我们就认为对象相等。
如果observer函数所提供的值相等那么也能判定相等。
不论哪种方式,我们都可以看出。等价和ADT内部实现无关都是在观察角度说明的等价性。

三.equals()与==

我们称==为引用等价性:判定两个引用是否指向同一个对象。
而equals()为对象等价性:判定两个对象是否等价关系。
equals()方法存在于object类中,因为每个类都有自己的实现,创建一个方法能够判定所有的对象等价性,所以默认实现是实现引用等价性。

四.equals实现注意

函数名
1.尽量使用@Override标注确保函数重写。
2.参数应该为Object
方法体
1.判断是否为空
2.instanceof判断同一类
3.按AF判断:要求自反传递对称,多次equals结果不变,hashcode同
HashCode方法:
重写原则:等价hashcode必须相等,不等价hashcode可以相等。

五.不可变类型等价性

1.观察等价性:Observer,producer,creator行为一致,不要求mutator.
2.行为等价性:所有方法调用结果相同,类似于==
对于不可变类型是一会儿事
可变类型实现行为等价性(不重写)即可,如果必须判断建议换用slimar方法,

六.一些类等价性

Date:观察。List:观察
Stringbuilder行为等价性。
自动包装机制value相同就等价,但有时==也可以用,因为常量池存在。

一次搞懂 OData Deep Create:在 ABAP Client Proxy 中优雅完成父子实体的一键插入 摘要: 本文面向熟悉SAP Gateway与OData的ABAP工程师,详解Deep Create的核心概念与实现。Deep Create允许在一次请求中原子化创建主实体及其关联子实体(如Team与Manager),解决多次HTTP请求导致的脏写问题。对比OData v2/v4协议差异后,重点阐述ABAP Client Proxy中通过Data Description Node构造层级数据描述树的方法,包括根/子节点定义、属性对齐及业务数据绑定。提供可复用的ABAP代码骨架,并区分Deep Create与$ 阅读详情

相关推荐

数据分析实战:如何用皮尔逊相关系数避免伪相关陷阱(附Python代码)

本文通过实战案例与Python代码,深入解析了皮尔逊相关系数在数据分析中的应用与常见陷阱。文章重点揭示了如何识别与避免由混杂变量导致的伪相关,并介绍了通过可视化、敏感性分析、分层分析与偏相关分析等方法来检验相关性的可靠性,帮助分析师建立严谨的相关性思维。

weixin_29051245的博客 413

java实验3 学生列表2

昨天上课老师给我们手敲了这个题的代码,本打算用大约半个小时讲完的,却整整用了一节课。获益匪浅,在老师演示的时候由衷感叹,真是思维严密,代码规范,就是真正程序员的感觉!我写把题目和老师完整的代码写上,然后再分析一下里面所涉及的内容。 题目 编写学生类,包含学号no、姓名name、成绩score,提供必要的构造函数、toString函数和equals/hashcode函数,其中,toString函数的格式为“no:xxx name:xxx score:xxx”,no参与equals和hashcode的计算。 在

weixin_45047913的博客 1511

可视化工具--Plotly

随着信息技术的发展和硬件设备成本的降低,当今的互联网存在海量的数据,要想快速从这些数据中获取更多有效的信息,数据可视化是重要的一环。对于Python语言来说,比较传统的数据可视化模块是Matplotlib,但它存在不够美观、静态性、不易分享等缺点,限制了Python在数据可视化方面的发展。   为了解决这个问题,新型的动态可视化开源模块Plotly应运而生。由于Plotly具有动态、美观、易用、种类丰富等特性,所以一经问世就受到开发人员的喜爱。

YFater的博客 1万+

计算机2019-1/2/3/4-作业6

文章目录1.学生信息管理2.打印双休日3. 学生列表4.比较日期5.学生Map6. 1.学生信息管理 根据Main类中main方法中的代码,设计满足要求的Student(学生)类: 1)包含属性:int no(学号)、String name(姓名); 2)满足Main类中main方法代码的说明要求。 Main类中main方法代码的说明: 首先,从键盘接收形如“3 cuizhenyu 2 tiangang 1 dingchangqing 4 zhangfeng”的字符串,该字符串中包含了4个学生的学号和姓名

你说的白是什么白_ 1085

ABAP代码检查(Code Review)

1、SLIN 扩展程序检查 也可通过(SE38工具栏->检查-扩展程序检查) 进入 2、ATC 检查 通过<SE38菜单栏-检查-ABAP测试主控室> 或事物代码SCI, 支持自定义检查变式 SCI可以配置检查变式满足特殊需求,配置对象集用于批量检查 3、通过ABAP测试主控室实现统一管理,定期检查作业和监控功能(事务代码ATC) 参考 SLIN...

u012232542的博客 6070

高并发网络爬虫实践(欧赔、亚盘、大小指数数据爬取)

本文通过对一个实战化的高并发网络爬虫脚本进行深度模块化剖析,展示了如何构建一个兼具性能、健壮性和易用性的数据采集工具。核心设计思想总结模块化与单一职责: 每个函数都专注于解决一个特定问题,无论是网络请求、数据解析还是文件操作。并发与效率: 通过ThreadPoolExecutor实现了高效的并发抓取,极大缩短了总耗时。健壮性与容错: 强大的重试机制、细致的异常处理和线程安全的文件写入,保证了程序在复杂网络环境下的稳定运行。断点续传: 精心设计了进度记录与恢复机制,使得大规模抓取任务变得轻松可控。

猫敷雪 486

详解equals()方法和hashCode()方法

前言 Java的基类Object提供了一些方法,其中equals()方法用于判断两个对象是否相等,hashCode()方法用于计算对象的哈希码。equals()和hashCode()都不是final方法,都可以被重写(overwrite)。 本文介绍了2种方法在使用和重写时,一些需要注意的问题。 如果觉得文章对你有帮助,欢迎点赞或转载。文章有疏漏之处,欢迎批评指正。 目录 一、equal...

weixin_30475039的博客 427

黑猫带你学eMMC协议第9篇:eMMC初始化过程(initial)

本文依据eMMC JEDEC5.1及个人工作经验整理而成,如有错误请留言。 文章为个人辛苦整理,付费内容,禁止私自转载。 文章所在专栏:《黑猫带你学:eMMC协议详解》 1 什么是emmc的初始化 对于小白来说,可能不太明白什么是emmc初始化。举个栗子:当你拿到一个电脑,接上电源,是不是就立马可以用了呢?并不是吧,你还需要去开机,等待电脑启动,配置完各种参数,等出现了电脑桌面,你才能用。那么同样,对于emmc芯片来说,也不是提供电源就能用了,需要输入各种命令后,让其进入到tran state后,才能正.

黑猫奥利奥的博客 6742

Java基础知识——equals方法和HashCode方法介绍

一、equals方法。 1、当一个对象没覆盖equals方式时,默认情况下equals方法都是调用Object类的equals方法,而Object的equals方法主要用于判断对象的内存地址引用是不是同一个地址(是不是同一个对象)。源码如下; 2、要是类中覆盖了equals方法,必须根据具体的代码来确定equals方法的作用了,覆盖后一般都是通过对象的内容是否相等来判断对象是否相等。 二

追梦人的博客 501

第一部分:VTK基础入门(第1章:VTK简介与概述)

VTK简介与核心特性概述 VTK(Visualization Toolkit)是一个开源的跨平台C++类库,专用于3D计算机图形学、图像处理和科学可视化。由Kitware公司开发,VTK自1993年起源以来,经历了开源化、成熟化和现代化多个发展阶段,现已成为科学可视化的核心工具之一。 VTK的核心特性包括: 管道架构:模块化设计实现数据流管理 丰富的数据支持:处理多边形数据、图像数据等 强大的渲染能力:集成OpenGL,支持多种渲染技术 最新版本VTK 9.4.2增强了现代C++支持,优化了内存管理,并提升

仰望星空的博客 2363

Python全栈入门到实战【AI实战篇 01】DeepSeek官方API全流程实战,第一个AI项目前置必备

文章摘要 本文介绍了基于DeepSeek API开发智能助手的前期准备和基础调用流程。内容涵盖: 前期准备:访问DeepSeek官网、完成账号注册与实名认证。 API Key获取:充值并创建API Key,强调密钥安全保存的重要性。 查阅文档:定位官方接口文档中的Python调用示例。 环境配置:安装openai依赖包,配置环境变量存储API Key。 代码编写:使用Python调用DeepSeek API实现基础对话功能。 调试与验证:解决常见问题,确保API调用成功。 适合零基础开发者跟随操作,快速入门

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 3739

PTA容器题1:学生列表2

7-6 学生列表2 (25分) 编写学生类,包含学号no、姓名name、成绩score,提供必要的构造函数、toString函数和equals/hashcode函数,其中,toString函数的格式为“no:xxx name:xxx score:xxx”,no参与equals和hashcode的计算 在main函数中构造一个容器存放学生对象 从命令行输入多个学生对象,存入列表中 从命令行中读入在列表对象上的操作,具体操作包含: add 添加一个学生(包含学号和学生姓名) delete 删除一个学生(包含学号

weixin_44000953的博客 448

点云配准3:3d-ndt算法在pcl上的实现以及参数设置

3d-ndt算法在pcl上的使用方法以及参数设置

诺有缸的高飞鸟的博客 7893

软件构造博客(6)-关于equals和hashcode方法的重写

软件构造博客

qq_39407234的博客 263

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

软件构造课程笔记——对象等价性

等价性设计原则 可变类 equals() 比较引用,同==运算符。即比较行为等价性而非观察等价性。 hashCode() 将引用地址映射到整型。 不当覆写equals(),hashCode()。 不可边类 equals() 比较抽象值。即比较行为等价性(对不可变类来说,观察等价即行为等价)。 hashCode() 将抽象值映射的整型。 应当覆写equals(),hashCode()。 equals...

hieheihei的博客 227

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

软件构造复习的一些经验笔记

Checked异常是那些在编译时就必须处理的异常。这意味着,如果某个方法可能会抛出checked异常,那么该方法要么必须在方法签名中声明该异常,要么必须在方法体内通过try-catch块进行处理。Unchecked异常是那些在编译时不强制要求处理的异常。它们通常是由程序中的逻辑错误或程序员的疏忽引起的。这类异常在运行时才会抛出。

qq_34168477的博客 796

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

软件构造感想6

本次主要是针对课上讲解的3-5、4-1和4-2内容进行总结。

ruiye117的博客 280

软件构造第3章——ADT和OOP(三)

3.1 数据类型和类型检查 3.1.1 编程语言中的数据类型 1. Java中的类型 (1)基本数据类型 int :± 2^31^范围内的整数 long:较大整数 boolean:布尔类型,true or false double:浮点数 char:单个字符如'A' (2)对象数据类型 String:一系列字符 BigInteger:任意大小整数 基本类型小写,对象类型大写字母开头 3.1.2...

qq_41483632的博客 272

软件构造期末复习3.4

软件构造期末复习3.4 OOP interface和Class:定义和实现ADT; 接口之间可以继承和扩展,接口不能实例化; 一个类可以实现多个接口(从而具备了多个接口中的方法); 一个接口可以有多种实现类 接口:确定ADT规约; 类:实现ADT; 也可以不需要接口,直接使用类作为ADT,既有ADT定义也有ADT实现; 实际中更倾向于用接口定义变量 Set senate = new HashSet<>(); ...

weixin_43705798的博客 363

软件构造关键知识点整理

本文主要针对软件构造这门课所学内容中相对独立且容易混淆的知识点,按照课件的划分逐章列举。 1 Views and Quality Objectives of Software Construction 本章主要介绍软件构造的观察视角和质量指标等概念。 首先是软件构造的多维视图: 当然并非图中的所有内容都要学习和记忆,本学期的课程中涉及到的只有下面这些: 接下来是我们所关注的软件外部质量因素: 以及这些属性间的折中策略也要记忆,在此就不再列举。 2 Testing and Test.

a150621730的博客 359

2021哈工大软件构造复习一

软件构造复习1⃣️ 文章目录前言· 基本数据类型·对象数据类型·静态/动态类型检查·Mutable/Immutable·值的改变、引用的改变、final·防御式拷贝· Snapshot diagram·Specification、前置/后置条件· 行为等价性· 规约的强度·ADT操作的四种类型·表示独立性、表示泄漏· 不变量 、表示不变量RI· 表示空间、抽象空间、AF·以注释的形式撰写AF、RI·接口、抽象类、具体类·继承、override· 多态、overload·泛型·等价性 equals()和=

nunu7的博客 167

软件构造笔记(三):关于等价性的个人理解

前言 前两篇博客中介绍了自己软件构造的第二次、第三次实验内容及心得体会,本文将介绍一些软件构造学习过程中遇到的一部分知识点难点,剩余的内容将在随后补充。

m0_46259572的博客 610

软件构造期末复习总结(二)

也就是说只有指向同样内存空间的objects,才是相等的,所以对mutable类型来说,无需重写这两个函数,直接调用Object的两个方法即可。通过构造一个抽象的Server类:AbstractServer,该抽象类中包含针对所有类型的Server都通用的代码,从而实现了对修改的封闭;Visitor:在特定ADT上执行某种特定操作,但该操作不在ADT内部实现,而是delegate到独立的visitor对象,客户端可灵活扩展/改变visitor的操作算法,而不影响ADT。浅拷贝:对于基本数据类型,无影响;

La_Grace的博客 422

哈工大软件构造课程知识点总结(四)

#哈工大软件构造课程#哈工大软件构造课程知识点总结(四)

RunTimeException的博客 421

JAVA 的常用的工具类(API)笔记

API (Application Programming 应用程序编程接口)是一些预定定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力, 而无需访问源码或理解内部工作机制的细节。

2402_82469094的博客 221

20210707

今天的软件构造已经复习完了ADT和OOP的等价性。 其中个人认为比较重点的是equals和hashcode的重写。 equals和hashcode的关系如下: 两个对象相等,hashcode一定相等 两个对象不等,hashcode不一定不等 hashcode相等,两个对象不一定相等 hashcode不等,两个对象一定不等 对于equals的重写是因为Object中的equals默认是按==来进行判断相等的,也即判断引用或者内存地址是否相同,这使得如果我们判断相等的标准与其产生冲突后,一定要对其

weixin_46065600的博客 128
上一篇: 软件构造第三章——ADT设计.方法规约
下一篇: 通过一个软构问题了解System.out.println
入过栈你
博客等级 码龄7年 2粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值