一、概述

Object类是所有Java类的祖先。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。

参考英文:

* Class {@code Object} is the root of the class hierarchy.

* Every class has {@code Object} as a superclass. All objects,

* including arrays, implement the methods of this class.

英文释义:

class hierarchy 类层次结构

二、object类中的方法

1、equals

判断两个对象是否相等

2、hashCode()

返回该对象的哈希码值。

三、方法详解

1、equals

自反性(reflexive ):对于任何非空引用值 x,x.equals(x) 都应返回 true。

对称性(symmetric ):对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。

传递性(transitive ):对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 应返回 true。

一致性(consistent):对于任何非空引用值 x 和 y,多次调用 x.equals(y) 始终返回 true 或始终返回 false,前提是对象上 equals 比较中所用的信息没有被修改。

对于任何非空引用值 x,x.equals(null) 都应返回 false。

Object 类的 equals 方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true(x == y 具有值 true)。

注意:当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。

以上特性,在进行equals方法的重写时,一定要遵守,否则容易出现一些意想不到的问题。这里就不一一举例了。

参考英文:

* Note that it is generally necessary to override the {@code hashCode}

* method whenever this method is overridden, so as to maintain the

* general contract for the {@code hashCode} method, which states

* that equal objects must have equal hash codes.

英文释义:

non-null reference value 非空引用值

multiple invocations 多次调用

2、hashcode

返回该对象的哈希码值。支持该方法是为哈希表提供一些优点,例如,java.util.Hashtable 提供的哈希表。

hashCode 的常规协定是:

在 Java 应用程序执行期间,在同一对象上多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是对象上 equals 比较中所用的信息没有被修改。从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致。

如果根据 equals(Object) 方法,两个对象是相等的,那么在两个对象中的每个对象上调用 hashCode 方法都必须生成相同的整数结果。

以下情况不 是必需的:如果根据 equals(java.lang.Object) 方法,两个对象不相等,那么在两个对象中的任一对象上调用 hashCode 方法必定会生成不同的整数结果。但是,程序员应该知道,为不相等的对象生成不同整数结果可以提高哈希表的性能。

实际上,由 Object 类定义的 hashCode 方法确实会针对不同的对象返回不同的整数。(这一般是通过将该对象的内部地址转换成一个整数来实现的,但是 JavaTM 编程语言不需要这种实现技巧。)

Java深入研究_Java深入研究【1、object类】相关推荐

  1. Java基础知识(二)(Object类的常用方法、日期时间类、System类、StringBuilder类、包装类、Collection集合、Iterator迭代器、泛型、list集Set接口...)

    文章目录 Java基础知识(二) 1.Object类的常用方法 1.1 toString方法 1.2 equals方法 1.3 Objects类 2.日期时间类 2.1 Date类 2.2 DateF ...

  2. java构造一个水果类_Java基础入门之Object类、匿名内部类、构造方法的继承解析...

    前言 大家好,我是Java进阶者.这篇文章我们主要介绍Java基础中的Object类.匿名内部类.构造方法的继承知识,一起来学习下吧! 一.Object类 1.Object类是所有类的父类,所有类都继 ...

  3. java学习笔记6--类的继承、Object类

    接着前面的学习: java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) java学习笔记2--数据类型.数组 java学习笔记 ...

  4. Java基础学习总结(7)——Object类

    2019独角兽企业重金招聘Python工程师标准>>> 一.Object类介绍 Object类在JAVA里面是一个比较特殊的类,JAVA只支持单继承,子类只能从一个父类来继承,如果父 ...

  5. 第三次学JAVA再学不好就吃翔(part45)--Object类

    学习笔记,仅供参考 文章目录 API概述 Object类 hashCode()方法 getClass()方法 toString()方法 equals()方法 ==与equals()方法的区别 API概 ...

  6. java高级类型_Java第四章高级类属性一

    四.高级类属性一: 一.== 1. 基本数据类型,根据基本数据类型的值判断是否相等,相等返回true,反之返回false 注:两端数据类型可以不同,在不同的情况下,也可以返回true 2.引用数据类型 ...

  7. java输出一个对象_java里面直接输出一个类的对象

    Java直接输出一个类的对象的时候,会自动调用这个类的toString方法.这个方法在object类中,而所有的类都继承object类,所以所有的类都有toString方法.当我们不重写该方法时,该方 ...

  8. Java面向对象(接口、匿名内部类、object类、单例、多例)

    1.1接口(抽象类与接口,优先使用接口) 抽象方法和全局常量的集合,使用interface定义,使用implements继承 接口可以多继承(可以向上强制转换) 接口只能有public,一般不写常量 ...

  9. Java - 为什么等待和通知是在Object类而不是Thread中声明的?

    分享一个大牛的人工智能教程.零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net 以下是我认为有意义的一些想法: 1.wait和not ...

最新文章

  1. 阿里飞猪个性化搜索排序探索实践
  2. Tomcat下HTTPS双向认证配置以及客户端调用案例
  3. ASP.NET2.0实现无刷新客户端回调
  4. 中小企业如何巧用大数据?
  5. 一条sql语句,要修改一个字段的俩个值,比如把字段sex中的男改为女,女改为男...
  6. 数据处理程序的一点经验
  7. BP神经网络相关知识
  8. 跟你们讲一个鬼故事,TA回来了!
  9. js验证家庭住址_手摇充电电筒、多功能组合剪刀……官方清单建议上海家庭储备13种应急物资...
  10. 【STM32】HAL库 STM32CubeMX教程六----定时器中断
  11. 中小机房UPS电源及环境多方式在线监控和告警方案
  12. python写透视挂_python opencv 透视变换
  13. java 斑马 打印 图片_Zebra打印机不会打印ZPL格式
  14. 01-Mybatis持久层框架快速入门(环境搭建、xml配置文件、注解)
  15. 计算机Excel设置透视图,excel共享表格数据-EXCEL在共享模式中,如何让数据透视表能够自动刷新?...
  16. 在云测平台对手机进行兼容性测试
  17. 哈希表、哈希桶的实现
  18. jzoj5629 【NOI2018模拟4.4】Map (业界毒瘤仙人掌缩环,线段树合并)
  19. html5限制拖拽区域怎么实现,html5怎么实现拖拽
  20. 数组中的元素转成Number或者String---数组map方法

热门文章

  1. pytorch nan问题
  2. canvas 轮播图片
  3. python opencv 旋转图片
  4. CUBLAS_STATUS_ALLOC_FAILED CUDA_ERROR_OUT_OF_MEMORY
  5. opencv实现快速傅立叶变换和逆变换
  6. 56 安装RabbitMQ或Redis
  7. android 稳定性测试工具,APP 稳定性测试工具-Fastbot_Android详解
  8. php如何做熔断降级,spring cloud 如何实现服务熔断服务降级
  9. git 撤销全部的commit_恢复git撤销commit的代码
  10. jstack-查看Java进程的线程堆栈信息,锁定高消耗资源代码