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. 闭包中this指向window的原因

    var t={ b:1, w:function a(){ var b=2; alert(this.b); //弹出t对象的b属性 alert(b); //弹出a函数的b变量 return functi ...

  2. linux 小技巧(磁盘空间搜索)

    这里记录一些linux 管理中可能会用到的又容易忘的一些小技巧. linux磁盘写入失败,提示磁盘空间不足.一般都会用df -h 或者df -i看是不是磁盘空间不足或者是inode空间不足.发生这种情 ...

  3. JavaScript中的栈及通过栈操作的实例

    <script> /*栈操作*/ function Stack() { this.dataStore = []; this.top = 0; this.push = push; this. ...

  4. Python3.5学习笔记-文件操作

    在Python中,操作文件对象使用open函数来创建,下表列出了常用的操作file的函数: 序号 方法及描述 1.file.close() 关闭文件.关闭后文件不能再进行读写操作. 2.file.fl ...

  5. Oracle11g 创建表空间、创建用户、角色授权、导入导出表以及中文字符乱码问题

    前提:本机已经安装了Oracle11g数据库. 需求:使用PL SQL数据库连接工具操作Oracle数据库 一.创建表空间和用户      想要操作数据库,首先需要创建用户并给用户授予权限:在创建用户 ...

  6. JavaScript中的坑--全局变量惹得祸

    js中变量的作用域及闭包的概念   概述 身为一名程序员,因为bug周末加班是必不可少的事情,当解决bug的时候,总有些bug是因为规范导致的,但是这些bug往往不好找,也就是"前人挖坑,后 ...

  7. canvas一周一练 -- canvas基础学习

    从上个星期开始,耳朵就一直在生病,里面长了个疙瘩,肿的一碰就疼,不能吃饭不能嗨 (┳_┳)……在此提醒各位小伙伴,最近天气炎热,一定要注意防暑上火,病来如山倒呀~ 接下来我正在喝着5块一颗的药学习ca ...

  8. box-shadow阴影详解

    每次使用box-shadow,都要查阅资料才能实现对应的效果,现在总结一下,方便以后查看. 使用语法: element{box-shadow: inset x-offset y-offset blur ...

  9. GET请求和POST请求的区别

    request获取请求参数 最为常见的客户端传递参数方式有两种: 浏览器地址栏直接输入:一定是GET请求: 超链接:一定是GET请求: 表单:可以是GET,也可以是POST,这取决与<form& ...

  10. 关于Verilog HDL的一些技巧、易错、易忘点(不定期更新)

    本文记录一些关于Verilog HDL的一些技巧.易错.易忘点等(主要是语法上),一方面是方便自己忘记语法时进行查阅翻看,另一方面是分享给大家,如果有错的话,希望大家能够评论指出. 关键词: ·技巧篇 ...