文章转自:http://www.cnblogs.com/mengdd/archive/2013/01/03/2842809.html 圣骑士
java.lang.Object
java.lang包在使用的时候无需显示导入,编译时由编译器自动导入。
Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类。
Object类是Java中唯一没有父类的类。
其他所有的类,包括标准容器类,比如数组,都继承了Object类中的方法。
Object类中的方法
构造方法:public Object()
文档中的类概览:
Java中的每个类都具有定义在Object类中的这些方法。
protected Object clone()
Creates and returns a copy of this object.
Object类中的说明是:
protected Object clone()
throws CloneNotSupportedException
这个方法比较特殊:
首先,使用这个方法的类必须实现java.lang.Cloneable接口,否则会抛出CloneNotSupportedException异常。
Cloneable接口中不包含任何方法,所以实现它时只要在类声明中加上implements语句即可。
第二个比较特殊的地方在于这个方法是protected修饰的,覆写clone()方法的时候需要写成public,才能让类外部的代码调用。
boolean equals(Object obj)
Indicates whether some other object is "equal to" this one.
“==”运算符判断两个引用是否指向同一个对象。
对于Object类的equals()方法来说,它判断调用equals()方法的引用于传进来的引用是否一致,即这两个引用是否指向的是同一个对象。
Object类中的equals()方法如下:
public boolean equals(Object obj) { return (this == obj); }
即Object类中的equals()方法等价于==。
只有当继承Object的类覆写(override)了equals()方法之后,继承类实现了用equals()方法比较两个对象是否相等,才可以说equals()方法与==的不同。
equals()方法需要具有如下特点:
自反性(reflexive):任何非空引用x,x.equals(x)返回为true。
对称性(symmetric):任何非空引用x和y,x.equals(y)返回true当且仅当y.equals(x)返回true。
传递性(transitive):任何非空引用x和y,如果x.equals(y)返回true,并且y.equals(z)返回true,那么x.equals(z)返回true。
一致性(consistent):两个非空引用x和y,x.equals(y)的多次调用应该保持一致的结果,(前提条件是在多次比较之间没有修改x和y用于比较的相关信息)。
约定:对于任何非空引用x,x.equals(null)应该返回为false。
并且覆写equals()方法时,应该同时覆写hashCode()方法,反之亦然。
int hashCode()
Returns a hash code value for the object.
当你覆写(override)了equals()方法之后,必须也覆写hashCode()方法,反之亦然。
这个方法返回一个整型值(hash code value),如果两个对象被equals()方法判断为相等,那么它们就应该拥有同样的hash code。
Object类的hashCode()方法为不同的对象返回不同的值,Object类的hashCode值表示的是对象的地址。
hashCode的一般性契约(需要满足的条件)如下:
1.在Java应用的一次执行过程中,如果对象用于equals比较的信息没有被修改,那么同一个对象多次调用hashCode()方法应该返回同一个整型值。
应用的多次执行中,这个值不需要保持一致,即每次执行都是保持着各自不同的值。
2.如果equals()判断两个对象相等,那么它们的hashCode()方法应该返回同样的值。
3.并没有强制要求如果equals()判断两个对象不相等,那么它们的hashCode()方法就应该返回不同的值。
即,两个对象用equals()方法比较返回false,它们的hashCode可以相同也可以不同。但是,应该意识到,为两个不相等的对象产生两个不同的hashCode可以改善哈希表的性能。
String toString()
Returns a string representation of the object.
当打印引用,如调用System.out.println()时,会自动调用对象的toString()方法,打印出引用所指的对象的toString()方法的返回值,因为每个类都直接或间接地继承自Object,因此每个类都有toString()方法。
Object类中的toString()方法定义如下:
public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }
参考资料推荐
官方文档和jdk中的源代码src。
帮助格式的文档下载:http://www.allimant.org/javadoc/index.php
推荐皮皮书屋:http://www.ppurl.com/
相关推荐
# Java核心知识点详解:Object类与常用API ## Object类概览 ### 1.1 概述 在Java编程语言中,`java.lang.Object`类具有非常特殊的地位,它是所有Java类的基类,即使程序员没有明确地指定某个类继承自`Object`类,...
### Object类和Scanner类 #### 一、Object类详解 **1.1 概述** 在Java语言中,`Object` 类是所有类的基础。它位于类层次结构的顶端,这意味着所有的类,无论显式还是隐式地,都直接或间接地继承自 `Object` 类。...
1.javaObject类.zip1.javaObject类.zip1.javaObject类.zip1.javaObject类.zip1.javaObject类.zip1.javaObject类.zip1.javaObject类.zip1.javaObject类.zip1.javaObject类.zip1.javaObject类.zip1.javaObject类.zip1....
Qt Object 类分析 Qt Object 类是 Qt 框架中最重要的类之一,它是 Qt 类体系的唯一基类,类似于 MFC 中的 CObject 和 Delphi 中的 TObject。QObject 是 Qt 各种功能的源头活水,因此 Qt 源码分析的第一节就放在这个...
它是所有 Java 类的超类,即使程序员在定义一个新类时未明确指定该类继承自任何类,默认情况下,这个类也将继承自 `Object` 类。这意味着 `Object` 类提供了所有 Java 对象共享的一些核心行为和特征。 #### 二、...
Object类是所有Java类的根父类,无论何时我们创建一个新的类,除非明确指定其他父类,否则它都会默认继承Object类。这使得Object类中的方法对所有Java类都可用,体现了Java的继承性和多态性。 1. **根父类理解** -...
==与equals的比较,包装类的使用
在Java编程语言中,`java.lang.Object`是所有类的根类,无论是用户自定义类还是内置类,它们都直接或间接地继承自Object类。这个类提供了许多基础方法,这些方法对于对象的操作和管理至关重要。现在,我们将深入探讨...
Object 类、Date 类、Calendar 类、StringBuilder 类相关知识点总结 Object 类是 Java 中所有类的父类,它提供了一些基本的方法,例如 equals()、toString() 等。equals() 方法用于判断两个对象是否相同,而 ...
这个源码资源是关于Java中的Object类的讲解案例代码。Object类是所有Java类的根类,它定义了一些常用的方法,例如equals()、hashCode()、toString()等。本案例代码将详细展示Object类的使用方法,并提供一些实际场景...
在Java编程语言中,Object类是所有类的根类,无论是自定义的还是Java库中的类,它们都直接或间接地继承自Object类。这个压缩包文件"详解Java中Object 类的使用.rar"包含了对Java中Object类的深入探讨,通过阅读其中...
【Object-C】C++对象库,实现类似于Java的Object类的Object, (a C++ Object library, implementating an Object similar to Java s Object class,) 文件列表: CMakeLists.txt (1300, 2023-10-16) LibObjClangPlugin...
Object类、日历类、System、Arrays、正则表达式相关知识点 在Java语言中,Object类是所有类的根类,每个类都使用Object作为超类。Object类中定义了native修饰的方法,称为本地方法,本地方法的特点是被native修饰的...
在Java编程语言中,Object类是一个非常基础且重要的类,它是所有类的终极父类。这意味着,无论我们自定义的类是否显式声明了继承,它们实际上都是Object类的间接子类。`Java程序设计:020611_Object类.ppt`这个资料...
在深入探讨“接口与Object类”这一主题之前,我们首先明确两个核心概念——接口(interface)与抽象类(abstract class),以及它们与Java基础类库中不可或缺的Object类之间的关系。 ### 接口与抽象类 #### 接口...
Java Object 类是所有Java类的根类,每个自定义的Java类都会无意识或有意识地继承Object类。Object类提供了几个核心的方法,这些方法在处理对象时非常关键,包括equals()、hashCode()、toString()、clone()、...
Object类和object类中方法的总结 及常见面试易混易错点
【Java基础知识-day01【Object类、常用API】】 在Java编程中,了解和掌握Object类及其常用API是至关重要的,因为所有Java类都间接或直接地继承自Object类。本章将深入探讨Object类的一些核心方法,如toString()和...
Object 类常用方法 Object 类是 Java 语言中的顶层类,是所有类的直接或间接父类。任何类,如果没有书写 extends 显式继承某个类,都默认直接继承 Object 类,否则为间接继承。Object 类中所定义的方法,是所有对象...
Object 类的 equals 和 hashCode 方法的重要性与实现 在 Java 编程语言中,Object 类是所有类的父类,但是在实际开发中,我们往往需要重写 Object 中的 equals 和 hashCode 方法,以便正确地比较对象的逻辑内容,而...