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. 一些爬虫中的snippet

    1.tornado 一个精简的异步爬虫(来自tornado的demo) #!/usr/bin/env python import time from datetime import timedelta ...

  2. UML中关联(Association)和依赖(Dependency)的区别

    原文转自:http://blog.csdn.net/metasearch/article/details/2334853 在UMLCHINA精华区,看到了一些关联和依赖的讨论,似乎越讲越糊涂.我想谈一 ...

  3. 利用java反射机制编写solr通用的java客户端

    一.前言 通过上一篇的讲解,我们知道了dynamicFiled字段,它是动态的,不需要显示的声明.而且一些常用的基本类型solr已经默认给我们创建好了. 例如:*_i,*_is,等. 如果我们要使用动 ...

  4. Ionic Demo 解析

    Ionic Demo 解析 index.html 解析 1.引入所需要的类库 <link rel="manifest" href="manifest.json&qu ...

  5. 简单粗暴的在vmware虚拟机中固定ip

    虚拟机对于很多做测试的或者在学习测试中的人来说是位常客,经常会用到,但是虚拟机重启之后,很多人遇到虚拟机ip变化,很是头痛,我在学习过程中也遇到了这个问题,百度了很多办法,有些办法对于网络知识小白来说 ...

  6. Java的数据类型和参数传递

    Java提供的数据类型主要分为两大类:基本数据类型和引用数据类型. Java中的基本数据类型 名称 大小 取值范围 byte型 (字节) 8bit -128-127  (-2^7到2^7-1) sho ...

  7. Asp.Net Core 中无法使用 ConfigurationManager.AppSettings

    刚刚接触.net core ,准备把之前的一些技术常用工具先移植到.net Standard上面来, 方便以后使用,结果用到ConfigurationManager 的 AppSettings 就出现 ...

  8. PCI_Making Recommendations

    协作性过滤 简单理解从众多用户中先搜索出与目标用户'品味'相似的部分人,然后考察这部分人的偏爱,根据偏爱结果为用户做推荐.这个过程也成为基于用户的协作性过滤(user_based collaborat ...

  9. java 关键字final

    一.最终的意思,可以修饰类,方法,变量.特点: A:它修饰的类,不能被继承. B:它修饰的方法,不能被重写. C:它修饰的变量,是一个常量.二.面试相关: 1.局部变量基本类型 值不能发生改变 例如: ...

  10. Android项目导入工程Module

    在Android开发过程中,我们经常引用一些模块,或者自己封装好的Project.在Android Studio某个项目是可以引入多个Module的.这样导入Module的好处方便对源码修改以适合自己 ...