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方法的更多相关文章

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

    前言 Java的基类Object提供了一些方法,其中equals()方法用于判断两个对象是否相等,hashCode()方法用于计算对象的哈希码.equals()和hashCode()都不是final方 ...

  2. java基础解析系列(十一)---equals、==和hashcode方法

    java基础解析系列(十一)---equals.==和hashcode方法 目录 java基础解析系列(一)---String.StringBuffer.StringBuilder java基础解析系 ...

  3. Java基础系列-equals方法和hashCode方法

    原创文章,转载请标注出处:<Java基础系列-equals方法和hashCode方法> 概述         equals方法和hashCode方法都是有Object类定义的. publi ...

  4. Java 如何重写对象的 equals 方法和 hashCode 方法

    前言:Java 对象如果要比较是否相等,则需要重写 equals 方法,同时重写 hashCode 方法,而且 hashCode 方法里面使用质数 31.接下来看看各种为什么. 一.需求: 对比两个对 ...

  5. 关于Object类的equals方法和hashCode方法

    关于Object类的equals的特点,对于非空引用: 1.自反性:x.equals(x) return true : 2.对称性:x.equals(y)为true,那么y.equals(x)也为tr ...

  6. HashSet中存方用户自己定义数据类型数据,重写equals方法和hashCode方法

    import java.util.Set; import java.util.HashSet; public class SetTest { public static void main(Strin ...

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

    创建实体类时,最好重写超类(Object)的hashCode()和equals()方法 equals()方法: 通过该实现可以看出,Object类的实现采用了区分度最高的算法,即只要两个对象不是同一个 ...

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

    equals()方法和hashCode()方法详解 1. Object类中equals()方法源代码如下所示: /** * Object类中的equals()方法 */ public boolean ...

  9. Hibernate中为什么要重写equals方法和hashcode方法

    1.*为什么要重写equals方法,首先我们来看一下equals源码: public boolean equals(Object anObject) { if (this == anObject) { ...

  10. 对象作为 map 的 key 时,需要重写 equals 方法和 hashCode 方法

    对象作为 map 的 key 时,需要重写 hashCode 和 equals方法 如果没有重写 hashCode 方法,那么下面的代码示例会输出 null 我们首先定义一个对象:BmapPoint, ...

随机推荐

  1. 用php+mysql+ajax实现淘宝客服或阿里旺旺聊天功能 之 前台页面

    首先来看一下我已经实现的效果图: 消费者页面:(本篇随笔) (1)会显示店主的头像 (2)当前用户发送信息显示在右侧,接受的信息,显示在左侧 店主或客服页面:(下一篇随笔) (1)在左侧有一个列表 , ...

  2. openssl ca(签署和自建CA)

    用于签署证书请求.生成吊销列表CRL以及维护已颁发证书列表和这些证书状态的数据库.因为一般人无需管理crl,所以本文只介绍openssl ca关于证书管理方面的功能. 证书请求文件使用CA的私钥签署之 ...

  3. php 时间戳转化成天数 四舍五入 整数

    public function edit() { global $_W; global $_GPC; $openid=$_W['openid']; $boards = pdo_fetchall('se ...

  4. iOS获取ipa素材、提取ipa包资源文件

    当我们看到一款优秀的App时,我们可能对它的一些素材比较感兴趣,或者我们也想仿写一款类似app,那么怎么能获取到它的素材资源文件呢? 下面我以ofo举例: 1.打开iTunes,搜索ofo关键字,选择 ...

  5. MyBatis源码解析【3】生命周期

    经过之前的项目构建,我们已经得到了一个可以使用的最基本的项目. 其中已经包括整个执行的过程.但是我们在完成之后也遇到了很多问题,我们就要慢慢的一步步解决这些问题. 讲道理,今天我们其实应该直接开始看源 ...

  6. 打包可执行的jar

    #配置项目路径 *除程序文件以外,其他相关素材也可以打包进jar,但在内部访问时需以包名作为跟路径,如hello/xxx/yyy.zzz mkdir hello vi hello/HelloWorld ...

  7. SpringMvc多视图配置(jsp、velocity、freemarker) velocity在springmvc.xml配置VelocityViewResolver,VelocityConfigurer,FreeMarkerConfigurer,FreeMarkerViewResolver

    ?xml version="1.0"encoding="UTF-8"?> <beans xmlns="http://www.springf ...

  8. 腾讯地图JS API实现带方向箭头的线路Polyline

    最近产品提出一个需求,在我们使用的腾讯地图上为线路polyline添加线路方向.例如下图所示: 查找腾讯地图JS API提供的API,没有找到对应的支持,询问负责腾讯地图的人也得到了同样的答案,即地图 ...

  9. sql相关

    case 函数 编写查询,按条件合并两列为一列(eg:我想从FullName或FirstName的列中找出不为空的雇员的名字) SELECT Name = CASE WHEN EMPLOYEE.Ful ...

  10. Eclipse 迁移到Android studio

    步骤: 1.安装 android-studio-bundle-143.2915827-windows https://developer.android.com/studio/install.html ...