equals()与 == 比较,hashCode方法
1.Object类
Object类是java中一切类的父类,java中所有的类都直接或间接
继承自Object类
Object中定义的方法不多,原因在于,java的类多种多样,他们的共
性不多,Object只将所有类都应具备的共性定义在其中
所有的类都是Object的子类,那么所有类都应用Object定义的方法
其中常用的有:toString(),equals(),hashCode()等
toString()方法:经常有系统API调用,此方法的返回值为String
类型,这个字符串应描述当前对象.
Object类中的toString()方法:返回的是对象的句柄的字符串形
式.格式:全限定名@hashcode
oop.day04.Card@367fed
Object类建议我们覆盖其toString()方法.
2.equals()方法:
此方法的意图在于比较两个对象的内容是否相等
比较对象分为两种:"引用相等" 和 "对象相等"
比较引用相等使用:"=="
比较对象相等使用: a.equals(b).对象.equals()方法
如何记忆:
引用比较"==":是不是同一个人
对象内容比较"equal":他们长得像不像
Object建议我们覆盖equals方法.若不覆盖,Object方法实现的
equals()方法为比较引用"=="
Object的equals方法:
public boolean equals(Object obj){
return this == obj;
}
覆盖equals的规则:
自反性:对于任何非空引用值x,x.equals(x)都应返回true
对称性:对于任何非空引用值x,y
当且仅当x.equals(y)时,y.equals(x)才返回true
传递性:对于任何非空引用值x,y,z
若x.equals(y)为true,且y.equals(z)为true,那么
x.equals(z)也应为true
一致性:对于任何非空引用值x,y.多次调用x.equals(y)应
一直保持true或false.前提是x或y的内容没有改变
过
对于任何非空引用值x,x.equals(null)始终为false
3.hashCode方法:
hashCode()方法返回一个整数值(哈希值)
若我们重写了equals()方法,那么就一定要重写hashCode()
int值返回原则:
当两个对象equals()比较为true,那么他们应具有相同
的hashCode()值
当两个对象equals()比较为false,那么他们应具有不同
的hashCode()值
hashCode()值要稳定(一致性).一个对象在创建以后就不
应再变化
Object提供的hashCode()方法返回的是堆内存当前对象的地
址的hashCode(int整数)值,注意,不是实际的物理地址.
若有不完善的地方请大家多提意见,转发时请注明出处!
equals()与 == 比较,hashCode方法的更多相关文章
- 详解equals()方法和hashCode()方法
前言 Java的基类Object提供了一些方法,其中equals()方法用于判断两个对象是否相等,hashCode()方法用于计算对象的哈希码.equals()和hashCode()都不是final方 ...
- java基础解析系列(十一)---equals、==和hashcode方法
java基础解析系列(十一)---equals.==和hashcode方法 目录 java基础解析系列(一)---String.StringBuffer.StringBuilder java基础解析系 ...
- Java基础系列-equals方法和hashCode方法
原创文章,转载请标注出处:<Java基础系列-equals方法和hashCode方法> 概述 equals方法和hashCode方法都是有Object类定义的. publi ...
- Java 如何重写对象的 equals 方法和 hashCode 方法
前言:Java 对象如果要比较是否相等,则需要重写 equals 方法,同时重写 hashCode 方法,而且 hashCode 方法里面使用质数 31.接下来看看各种为什么. 一.需求: 对比两个对 ...
- 关于Object类的equals方法和hashCode方法
关于Object类的equals的特点,对于非空引用: 1.自反性:x.equals(x) return true : 2.对称性:x.equals(y)为true,那么y.equals(x)也为tr ...
- HashSet中存方用户自己定义数据类型数据,重写equals方法和hashCode方法
import java.util.Set; import java.util.HashSet; public class SetTest { public static void main(Strin ...
- 详解 equals() 方法和 hashCode() 方法
创建实体类时,最好重写超类(Object)的hashCode()和equals()方法 equals()方法: 通过该实现可以看出,Object类的实现采用了区分度最高的算法,即只要两个对象不是同一个 ...
- equals()方法和hashCode()方法详解
equals()方法和hashCode()方法详解 1. Object类中equals()方法源代码如下所示: /** * Object类中的equals()方法 */ public boolean ...
- Hibernate中为什么要重写equals方法和hashcode方法
1.*为什么要重写equals方法,首先我们来看一下equals源码: public boolean equals(Object anObject) { if (this == anObject) { ...
- 对象作为 map 的 key 时,需要重写 equals 方法和 hashCode 方法
对象作为 map 的 key 时,需要重写 hashCode 和 equals方法 如果没有重写 hashCode 方法,那么下面的代码示例会输出 null 我们首先定义一个对象:BmapPoint, ...
随机推荐
- JavaScript学习笔记(一)——初识js
这个周,开始了JavaScript的学习路程.虽然从高中开始就接触了网页设计的知识,大学里的学习也算回顾了Html和Css的知识,实习期间在牛盾科技也是做的网站建设,不过通过前段时间找工作才发现自己了 ...
- java基础(10) -线程
线程 相当于轻量级进程,线程在程序中是独立的.并发的执行路径,每个线程有它自己的堆栈.自己的程序计数器和自己的局部变量.但是,与分隔的进程相比,进程中的线程之间的隔离程度要小.它们共享内存.文件句柄和 ...
- 序列、视图、索引(面试看这个就GO了)
oracle内置对象 序列.视图.索引 序列 create sequence aaa start with 1; 使用 视图 创建好之后 然后直接用 就OK了 有了视图可以代替子查询,使得sql简洁 ...
- Vijos 1010 清帝之惑之乾隆
背景 乾隆,雍正的第四子,在位60年,退位后又当了三年太上皇,终年89岁. 乾隆即位之初,实行宽猛互济的政策,务实足国,重视农桑,停止捐纳,平定叛乱等一系列活动中,充分体现了他的文治武功,乾隆帝向慕风 ...
- 网络流入门—用于最大流的Dinic算法
"网络流博大精深"-sideman语 一个基本的网络流问题 最早知道网络流的内容便是最大流问题,最大流问题很好理解: 解释一定要通俗! 如右图所示,有一个管道系统,节点{1,2,3 ...
- 原生的Ajax的实现
<script type="text/javascript"> // Ajax固定的模版 // 第一步:创建xhr对象,使用new关键字来调用内置的构造函数 var x ...
- 面向对象15.3String类-常见功能-获取-2
public class String_APImethod {/* * 1.4获取字符串中的一部分字符串,也叫字符串 * String substring(int beginIndex, int en ...
- C语言学习随笔
前段时间我们学习了HTML,感觉自己不在状态,后来就开始怀疑自己的智商呢!现在C语言也到了尾声,在这20天的学习过程中,我没 有以前那么的傲娇了. 我开始慢慢去反省自己,自己究竟该如何去学习,都说勤能 ...
- Xcode导出App一般问题及其解决方法(开发者协议变更及Bundle Id过期问题)
Xcode导出App一般问题及其解决方法 问题一:开发者协议变更问题. 变更后打包会出现如下图A警告,此时点击 "visit developer website"进入Apple开发 ...
- Ionic 安装创建项目
在安装了node+Cordova的情况下(过程参考我之前的文章Phonegap环境配置),安装ionic: 安装ionic npm install -g ionic Android创建安装: npm ...