`
tomotoboy
  • 浏览: 167294 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

java.lang.Object详解

    博客分类:
  • Java
阅读更多
hashCode
public int hashCode()
返回该对象的哈希码值。支持此方法是为了提高哈希表(例如 java.util.Hashtable 提供的哈希表)的性能。
hashCode 的常规协定是:
  • 在 Java 应用程序执行期间,在对同一对象多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是将对象进行 equals 比较时所用的信息没有被修改。从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致。
  • 如果根据 equals(Object) 方法,两个对象是相等的,那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果。
  • 如果根据 equals(java.lang.Object) 方法,两个对象不相等,那么对这两个对象中的任一对象上调用 hashCode 方法不 要求一定生成不同的整数结果。但是,程序员应该意识到,为不相等的对象生成不同整数结果可以提高哈希表的性能。


equals
public boolean equals(Object obj)
指示其他某个对象是否与此对象“相等”。

equals 方法在非空对象引用上实现相等关系:
  • 自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。
  • 对称性:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。
  • 传递性:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 应返回 true。
  • 一致性:对于任何非空引用值 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 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。

clone
protected Object clone() throws CloneNotSupportedException
创建并返回此对象的一个副本。“副本”的准确含义可能依赖于对象的类。这样做的目的是,对于任何对象 x,表达式:
x.clone() != x为 true,表达式:
x.clone().getClass() == x.getClass()也为 true,但这些并非必须要满足的要求。一般情况下:
x.clone().equals(x)为 true,但这并非必须要满足的要求。
按照惯例,返回的对象应该通过调用 super.clone 获得。如果一个类及其所有的超类(Object 除外)都遵守此约定,则 x.clone().getClass() == x.getClass()。

按照惯例,此方法返回的对象应该独立于该对象(正被复制的对象)。要获得此独立性,在 super.clone 返回对象之前,有必要对该对象的一个或多个字段进行修改。这通常意味着要复制包含正在被复制对象的内部“深层结构”的所有可变对象,并使用对副本的引用替换对这些对象的引用。如果一个类只包含基本字段或对不变对象的引用,那么通常不需要修改 super.clone 返回的对象中的字段。

Object 类的 clone 方法执行特定的复制操作。首先,如果此对象的类不能实现接口 Cloneable,则会抛出 CloneNotSupportedException。注意,所有的数组都被视为实现接口 Cloneable。否则,此方法会创建此对象的类的一个新实例,并像通过分配那样,严格使用此对象相应字段的内容初始化该对象的所有字段;这些字段的内容没有被自我复制。所以,此方法执行的是该对象的“浅表复制”,而不“深层复制”操作。

Object 类本身不实现接口 Cloneable,所以在类为 Object 的对象上调用 clone 方法将会导致在运行时抛出异常。


返回:
此实例的一个副本。
抛出:
CloneNotSupportedException - 如果对象的类不支持 Cloneable 接口,则重写 clone 方法的子类也会抛出此异常,以指示无法复制某个实例。
另请参见:
Cloneable
分享到:
评论

相关推荐

    WebLogic错误 java.lang.AssertionError: Registered more than one

    Caused by: java.lang.RuntimeException: javax.management.remote.JMXServerErrorException: java.lang.AssertionError: Registered more than one instance with the same objectName : com.bea:Name=wl04,Type=...

    Java.lang.reflect 包下常用的类及方法简介

    在Java编程语言中,`java.lang.reflect`包是核心库的一部分,它提供了运行时访问类、接口、字段和方法的能力。这个包对于理解和操作对象的动态特性至关重要,尤其是在实现反射机制时。反射允许我们在程序运行期间...

    在Java中异常分析

    - **异常路径**:`java.lang.Object -> java.lang.Throwable -> java.lang.Exception -> java.lang.RuntimeException -> java.lang.IndexOutOfBoundsException -> java.lang.ArrayIndexOutOfBoundsException` ...

    java_lang包详解.pdf

    《java_lang包详解》 Java语言的核心库之一就是java.lang包,它包含了Java程序中最基础、最核心的类和接口。由于这个包是自动导入到每个Java程序中的,所以理解和掌握其中的类和接口对于编写Java代码至关重要。下面...

    java-lang包详解

    【java-lang包详解】 在Java编程语言中,`java.lang`包是所有Java程序的基础,因为它包含了许多核心类和接口,这些类和接口是编写任何Java应用程序所必需的。由于这个包是自动导入的,因此程序员无需在代码中显式地...

    java反射机制详解

    public java.lang.Object java.util.Stack.push(java.lang.Object) public boolean java.util.Stack.empty() public synchronized java.lang.Object java.util.Stack.peek() public synchronized int java.util....

    Java核心API

    Java.lang包是Java的核心包之一,包含了构成Java语言基础的类和接口,如String、Object、Thread等。 #### Java.lang.annotation Java.lang.annotation包自J2SE5起引入,支持注释(元数据),增强了代码的可读性和...

    Java反射机制的工作原理详解.docx

    在Java中,反射机制主要通过`java.lang.Class`、`java.lang.reflect.Field`、`java.lang.reflect.Method`和`java.lang.reflect.Constructor`等类来实现。 **一、反射机制的主要功能** 1. **运行时判断对象所属的类...

    java面试题--反射机制

    #### 五、`java.lang.Class`详解 `Class`类在Java反射机制中扮演着核心角色,它是所有Java类的运行时表示。`Class`对象可以由以下几种方式获取: 1. **通过类的`Class`属性获取**:如`String.class`。 2. **通过...

    java反射详解

    ### Java反射机制详解 #### 一、引言 Java反射机制是Java编程语言的一个核心特性,它允许程序在运行时动态地访问类的信息,并能够直接操作这些类的对象。这种能力对于许多开发框架(如Spring)来说至关重要,因为...

    Java2 SDK 类库.rar

    `java.lang`包包含了所有Java程序的基本类,如`String`、`Object`和`System`。`java.io`包提供了输入/输出流,用于数据的读写。`java.util`包包含了集合框架、日期时间类、队列、堆栈等实用工具。 2. **集合框架**...

    Java软件开发实战 Java基础与案例开发详解 15-1 反射 共13页.pdf

    ### Java反射机制详解 #### 15.1 Java反射机制概览 ##### 15.1.1 什么是Java反射? 反射(Reflection)是Java语言的一个核心特性,它允许程序在运行时动态地获取对象类型信息,并且可以利用这些信息进行诸如创建...

    JAVA2 SDK 类库详解

    `java.lang`包包含了所有Java程序的基本元素,如`Object`类和异常处理。`java.io`包提供输入/输出功能,如文件操作和数据流处理。`java.util`包含集合框架、日期和时间处理、随机数生成等功能。`java.math`则提供了...

    重难点之java_javalang包.pdf

    《Java编程中的java.lang包详解》 在Java编程语言中,`java.lang`包是所有Java程序的基础,它包含了进行基本操作和对象创建所必需的类和接口。这个包的重要性在于它是每个Java应用程序的默认导入包,无需显式导入...

    较常见的J2EE面试题(附答案)

    - **java.lang.Thread(T)**:表示`java.lang.Thread`类可以继承自一个类,实际上它继承自`java.lang.Object`。 - **java.lang.Number(T)**:同样,`java.lang.Number`类也仅能继承自一个类。 - **java.lang.Double(F...

    《JAVA2 SDK 类库详解》

    1. **基础类库**:包括`java.lang`包,这是每个Java程序的基础,包含了如`Object`、`String`、`Integer`等基本类和接口。此外,还有`java.util`包,提供了集合框架、日期时间、随机数生成等功能。 2. **集合框架**...

    java类库详解

    1. **基础类库**:这是Java开发的基础,包括`java.lang`包,其中包含了如`Object`、`String`、`Integer`等基本类型和常用类。`System`类提供了系统级的操作,如获取当前时间,`Math`类则提供了数学运算方法。 2. **...

    语言程序设计资料:JAVA期末考试试卷.doc

    6. `java.lang.Object`的重要性:`java.lang.Object`是Java所有类的根类,任何自定义类如果没有指定父类,那么默认继承自`Object`。 7. Swing事件处理机制:Swing的事件处理机制基于监听器模式,包括事件的监听者...

    Java动态代理机制详解[整理].pdf

    在Java中,有两种主要的动态代理实现方式:一是使用`java.lang.reflect.Proxy`类,二是使用`java.lang.invoke.MethodHandles`和`java.lang.invoke.MethodHandle`。这里我们主要讨论`Proxy`类。 首先,让我们理解...

Global site tag (gtag.js) - Google Analytics