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, ...
随机推荐
- mysql清除数据库中字符串空格方法
update `z_lottery_list` set `win_number`=replace(`win_number`,' ','');
- Example017简单的下拉框
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 如何连接新浪sae共享数据库
网上找了很久,太杂了,下文介绍如何连接新浪sae共享数据库,方便有效 1.首先贴出官方文档: 以下是一些和共享MySQL数据库服务相关的预定义常量,你可以直接引用这些参数来连接数据库: 用户名 : S ...
- 如何简单的实现新手引导之UGUI篇
一个完整的游戏项目肯定是要做新手引导的,而引导做的好坏可能会影响玩家的留存.那么怎么简单的实现个简有效的引导呢!先不说废话,先看看效果,这是一个基于UGUI做的一个简单的引导! 怎么样,看着是那么回事 ...
- 点击率模型AUC
一 背景 首先举个例子: 正样本(90) 负样本(10) 模型1预测 ...
- Redis初体验
简介 Redis是一个速度非常快的非关系型数据库,它不仅性能强劲,而且还具有复制特性以及为解决问题而生的独一无二的数据模型.作为键值型数据库,Redis支持5中数据类型:字符串,列表,集 ...
- pdf文件之itextpdf插入html内容以及中文解决方案
简述 目前网上已经有很多种html文件直接转pdf的技术帖子,但是很少有直接将部分html作为段落插入到pdf中,而且也没有一个可以很好的解决中文显示的问题. 因此今天上午围绕这个问题进行了研究,把解 ...
- JavaScript学习笔记(一)——初识js
这个周,开始了JavaScript的学习路程.虽然从高中开始就接触了网页设计的知识,大学里的学习也算回顾了Html和Css的知识,实习期间在牛盾科技也是做的网站建设,不过通过前段时间找工作才发现自己了 ...
- Redis事务原理分析
Redis事务原理分析 基本应用 在Redis的事务里面,采用的是乐观锁,主要是为了提高性能,减少客户端的等待.由几个命令构成:WATCH, UNWATCH, MULTI, EXEC, DISCARD ...
- JSON.parse()与JSON.stringify()的区别
JSON.parse()[从一个字符串中解析出json对象] 例子: //定义一个字符串 var data='{"name":"goatling"}' //解析 ...