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. 【LeetCode】141. Linked List Cycle

    题目: Given a linked list, determine if it has a cycle in it. Follow up:Can you solve it without using ...

  2. 编写运行最简单的java程序——使用记事本编写java程序

    第一个java程序--使用记事本编辑 经过上篇文章的java环境搭建成功的小伙伴们可以在自己的计算机上编写属于自己的java程序了yo~ 还没有搭建环境变量的小伙伴请转移到上一篇的随笔中去完成搭建. ...

  3. 彩扩机项目--NPN和PNP三极管作为开关管的区别

    上图是最终画好的电路.使用的是NPN三极管,并且把NPN三极管放在了下面.下面分析下NPN三极管作为开关管能否放在上面. 从上面两张图分析可知,当三极管作为开关管使用的时候,NPN三极管需要放在下面( ...

  4. Disruptor的应用示例——大文件拆分

    结合最近Disruptor的学习,和之前一直思考解决的大文件拆分问题,想到是否可以使用Disruptor作为生产者/消费者传递数据的通道呢?借助其高效的传递,理论上应当可以提升性能.此文便是此想法的落 ...

  5. 【笔记】记一次.net语法await和async的异步编程实验与笔记。

    1.实践代码全记录: using System; using System.Collections.Generic; using System.Diagnostics; using System.Li ...

  6. python2和python3中的类

    经典类与新式类 例如: A B C D 四个类 D 包含 BC :   B和C分别包含A py2 在经典类中是按深度优先来继承 例如: D中查找B,B没有从A中查找 新式类中是按广度优先来查找继承的 ...

  7. [图形学] Chp10 OpenGL三维观察程序示例

    10.10节书中给出了一个程序示例,有一个填充正方形,从侧面的角度观察并画到屏幕上. 图0 这里进一步画出一个立方体,将相机放入立方体中心,旋转相机,达到在立方体中旋转看到不同画面的效果. 步骤: 1 ...

  8. [图形学] Chp9 三维几何变换--栈处理函数与矩阵管理函数的区别

    矩阵管理函数:glLoadIdentity()是把当前活动矩阵设置为单位矩阵. 栈处理函数:glPushMatrix()是将当前活动的变换矩阵复制一份,压入栈顶:glPopMatrix()是破坏当前活 ...

  9. Eclipse 迁移到Android studio

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

  10. 【Data Visual】一文搞懂matplotlib数据可视化

    一文搞懂matplotlib数据可视化 作者:白宁超 2017年7月19日09:09:07 摘要:数据可视化主要旨在借助于图形化手段,清晰有效地传达与沟通信息.但是,这并不就意味着数据可视化就一定因为 ...