为什么要重写toString()方法和hashcode()方法
一、toString():
在Object类里面定义toString()方法的时候返回的对象的哈希code码,这个hashcode码不能简单明了的表示出对象的属性。所以要重写toString()方法。
当需要将一个对象输出到显示器时,通常要调用他的toString()方法,将对象的内容转换为字符串.java中的所有类默认都有一个toString()方法。
默认情况下 System.out.println(对象名)或者System.out.println(对象名.toString())输出的是此对象的类名和此对象对应内存的首地址如果想自定义输出信息必须重写toString()方法。
注意事项:
1.必须被声明为public
2.返回类型为String
3.方法的名称必须为toString,且无参数
4.方法体中不要使用输出方法System.out.println()
二、hashCode():
在Object类里面定义的equals比较的是对象的引用是否指向同一块内存地址。 一般情况下比较两个对象时比较他的值是否一致,所以要进行重写。重写之后是为了比较两个对象的value值是否相等。 特别指出,利用equals比较八大包装对象(如int,float等)和String类(因为该类已重写了equals和hashcode方法)对象时,默认比较的是值,在比较其它对象都是比较的引用地址。
注意事项:
1.自反性:对于任意的引用值x,x.equals(x)一定为true
2.对称性:对于任意的引用值x 和 y,当x.equals(y)返回true,y.equals(x)也一定返回true
3.传递性:对于任意的引用值x、y和z,如果x.equals(y)返回true,并且y.equals(z)也返回true,那么x.equals(z)也一定返 回 true
4.一致性:对于任意的引用值x 和 y,如果用于equals比较的对象信息没有被修改,多次调用x.equals(y)要么一致地返回true,要么一致地返回false
5.非空性:对于任意的非空引用值x,x.equals(null)一定返回false
转载于:https://www.cnblogs.com/yan217/p/5664895.html
为什么要重写toString()方法和hashcode()方法相关推荐
- HashSet要重写equals方法和hashCode方法
注:重要笔记在代码中注释有 hashSet去重: 即判断两个对象是否相等 1:会先调用对象的hashCode方法获得hash的值,如果set中哈希表里面没有对应的hash值,则将次对象存入set中 2 ...
- java重写6,java重写equals()方法和hashCode()方法
1.equals()方法和hashCode()方法是什么? equals()和hashCode()都是是Java中万物之源Object类中的方法: equals方法用于比较两个对象是否相同,Objec ...
- JAVA正确地自定义比较对象---如何重写equals方法和hashCode方法
在实际应用中经常会比较两个对象是否相等,比如下面的Address类,它有两个属性:String province 和 String city. public class Address {privat ...
- java中重写hashcode_Java中HashSet要重写equals方法和hashCode方法
下面给出一个属性不同但哈希码相同的例子: import java.util.HashSet; import java.util.Iterator; import java.util.Set; clas ...
- Java基础语法:重写equals方法和hasCode方法
目录 一.为什么需要重写equals和hasCode方法 二.equals和hasCode解读 1.equals方法 2.hasCode方法 三.重写 四.参考资料 一.为什么需要重写equals和h ...
- 详解 equals() 方法和 hashCode() 方法
来源:编程迷思, www.cnblogs.com/kismetv/p/7191736.html 前言 Java的基类Object提供了一些方法,其中equals()方法用于判断两个对象是否相等,has ...
- equals方法和hashCode方法之间的那些事(1.1)
我们先来看一下java官方 jdk中关于equals方法和hashCode方法的介绍: 不知道读者们注意到一个细节没有,就是: 注意:当此方法被重写时,通常有必要重写 hashCode 方法,以维护 ...
- java中Object和Objects类、toString方法和equals方法介绍
Object类: Object类位于java.lang包中,lang包下的类无需导包就可以使用,object是Java语言中的根类,即所有类的父类.Object中描述的所有方法其子类都可以使用.在对象 ...
- Java equals()方法和hashCode()方法
equals()方法 如果满足了以下任何一个条件,就不需要覆盖equals()方法: 1 类的每个实例本质上都是唯一的. 2 不关心类是否提供了"逻辑相等"的测试功能. 3 父类已 ...
最新文章
- vue 滑动加载列表 php,通过原生vue添加滚动加载更多功能
- NTPDATE - no server suitable for synchronization found 修复
- DirectX 9的坐标系统变换
- JZOJ 5236. 【NOIP2017模拟8.7A组】利普希茨
- 通过源码将git升级到最新版
- windows版一键绕id工具_Windows免费版一键绕过IOS13.6激活锁工具XgRiNdA,完美重启!...
- jQuery零基础入门——(三)层级选择器
- 2017乌鲁木齐ICPC: K. Sum of the Line(容斥)
- mysql服务的注册,启动、停止、注销。 [delphi代码实现]
- BT5的登陆用户名和密码
- 局域网网站服务器dns设置,简易搭建局域网内部dns服务器
- 概率论 方差公式_2020考研数学:概率论各章节知识点梳理
- 单片机课设-中断程序(仿真图,代码全)
- 7款非常棒的flash游戏菜单启动界面
- 爱情就像是免杀,连鞋都没脱,就悄无声息的走进了你的心里
- 深度分析游戏中的随机概率
- fluter的环境搭配及android studio开发
- 配置使用costmap_2d_node
- 图像处理总结2、图像增强
- HDUOJ 6707 Shuffle Card
热门文章
- IIS 6.0 访问aspx页面出现404错误
- 关于PHP下载文件功能中header()书写方式
- Angularjs切换网站配色模式简单示例2(切换body元素的class)
- Redis-集群监控之Redis monitor
- Kylin启动异常:java.lang.outofMemoryError:Requested array size exceeds VM limit
- oracle查询字段精度,【Oracle】查询字段的长度、类型、精度、注释等信息
- 训练不出结果_训练赛惨败SKT?FPX直播透露拿冠军原因!Karsa再谈离开RNG?
- 在php中创建三个表格,创建新工作表PHPExcel
- mysql动态代理_超全MyBatis动态代理详解(绝对干货)
- linux编译mesa,如何在Ubuntu 16.04,17.10中安装Mesa 17.3.3