Java深入研究【1、object类】

一、概述
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 编程语言不需要这种实现技巧。)

时间: 2024-10-25 02:14:11

Java深入研究【1、object类】的相关文章

Java提高学习之Object类详解(1)

转自:http://www.importnew.com/10304.html 问:什么是Object类? 答:Object类存储在java.lang包中,是所有java类(Object类除外)的终极父类.当然,数组也继承了Object类.然而,接口是不继承Object类的,原因在这里指出:Section 9.6.3.4 of the Java Language Specification:“Object类不作为接口的父类”.Object类中声明了以下函数,我会在下文中作详细说明. 1 prote

java基础学习总结——Object类

永不放弃,一切皆有可能!!! 只为成功找方法,不为失败找借口! java基础学习总结——Object类 一.Object类介绍 Object类在JAVA里面是一个比较特殊的类,JAVA只支持单继承,子类只能从一个父类来继承,如果父类又是从另外一个父类继承过来,那他也只能有一个父类,父类再有父类,那也只能有一个,JAVA为了组织这个类组织得比较方便,它提供了一个最根上的类,相当于所有的类都是从这个类继承,这个类就叫Object.所以Object类是所有JAVA类的根基类,是所有JAVA类的老祖宗.

代码块和Java的API及Object类

代码块 局部代码块 特点: 以”{}”划定的代码区域,此时只需要关注作用域的不同即可 方法和类都是以代码块的方式划定边界的 构造代码块 优先于构造方法执行,构造代码块用于执行所有对象均需要的初始化动作 每创建一个对象均会执行一次构造代码块 静态代码块 l 它优先于主方法执行.优先于构造代码块执行,当以任意形式第一次使用到该类时执行. l 该类不管创建多少对象,静态代码块只执行一次. l 可用于给静态变量赋值,用来给类进行初始化. Java的API及Object类 Java 的API  Java

java之常见对象-Object类

1.API概述 API(Application Programming Interface),应用程序编程接口. 编写一个机器人程序去控制机器人踢足球,程序就需要向机器人发出向前跑.向后跑.射门.抢球等各种命令,没有编过程序的人很难想象这样的程序如何编写.但是对于有经验的开发人员来说,知道机器人厂商一定会提供一些用于控制机器人的java类,这些类中定义好了操作机器人各种动作的方法.其实,这些java类就是机器人厂商提供给应用程序编程的接口,大家把这些类就称为应用程序编程接口. 2.java AP

Java核心API -- 1(Object类)

1. Object类 在Java体系中,java.lang.Object类位于顶端(是所有对象的直接或间接父类).如果一个类没有写extends关键字声明其父类,则该类默认继承java.lang.Object类.Object类定义了"对象"的基本行为,被子类默认继承. 1)toString方法:返回一个可以表示该对象属性内容的字符串. MyObject obj=new MyObject();    // MyObject类自定义 String info=obj.toString();

java.lang包【Object类】

基本描述: (1)Object类位于java.lang包中,java.lang包包含着Java最基础和核心的类,在编译时会自动导入: (2)Object类是所有Java类的祖先.每个类都使用 Object 作为超类.所有对象(包括数组)都实现这个类的方法.可以使用类型为Object的变量指向任意类型的对象 Object的主要方法介绍: package java.lang; public class Object { /* 一个本地方法,具体是用C(C++)在DLL中实现的,然后通过JNI调用.*

[ 转载 ] Java基础10--关于Object类下所有方法的简单解析

关于Object类下所有方法的简单解析 类Object是类层次结构的根类,是每一个类的父类,所有的对象包括数组,String,Integer等包装类,所以了解Object是很有必要的,话不多说,我们直接来看jdk的源码,开始我们的分析之路 1.hashcode() public native int hashCode();//native说明跟机器有关,跟对象的地址有关 如果我们新建一个类,而hashcode没有被重写的话,那么hashcode返回的值只于对象的地址有关,如果hashcode被重

Java语言API,Object类、StringBuilder、Date时间获取、System类常用

Object类Java.lang.Object(类):是Java中任何"引用类型"的父类.包括自定义的类.类库中的类.数组 都继承了toString()和equals()方法 1.toString方法:打印引用类型时,会自动调用toString方法,但是父类Object中的toString方法打印的是地址值,需要在自类中重写toString方法,以输出所有属性的值 2.equals方法:equals方法是比较两个对象的所有属性是否相同, 如果没有覆盖重写equals方法,那么Objec

Java的API及Object类

1.java的API(API: Application(应用) Programming(程序) Interface(接口) (1) Java API就是JDK中提供给我们使用的类,这些类将底层的代码实现封装了起来,我们只要学会这些类如何使用即可. JDK安装目录下有个src.zip文件,这个文件解压缩后里面的内容是所有Java类的源文件.可以在其中查看相对应的类的源码. 就是发给我们的这个应用: (2)object类: Object类是Java语言中的根类,即所有类的父类.它中描述的所有方法子类

Java基础教程(19)--Object类

??Object类位于类结构树的最顶端,所有的类都是它的直接或间接子类,因此所有的类都继承了Object类的方法,我们可以在需要的时候覆盖这些方法.下面是一些将会在本文中讨论的Object类的方法: protected Object clone() throws CloneNotSupportedException ??创建并返回此对象的副本. public boolean equals(Object obj) ??判断某个对象是否与这个对象"相等". protected void f