`

Java Object类中方法理解

阅读更多
Object类中,共有12个方法,对这些方法的理解程度直接关系到写代码的深度。
本人把该贴置顶,也是为了在不断学习和理解中,慢慢完善对Object类的理解。

package java.lang;
public class Object {
    // 调用本地方法,具体内容应该在dll文件中。
    private static native void registerNatives();
    static {
        registerNatives();
    }
    /* 返回此 Object 的运行时类。*/
    public final native Class<?> getClass();

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


    public boolean equals(Object obj) {
	return (this == obj);
    }


    protected native Object clone() throws CloneNotSupportedException;

    /*返回该对象的字符串表示。*/
    public String toString() {
	return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

   /*唤醒在此对象监视器上等待的单个线程。*/
    public final native void notify();

   /*唤醒在此对象监视器上等待的所有线程。*/
    public final native void notifyAll();


	/*在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。换句话说,此方法的行为就好像它仅执行 wait(0) 调用一样。 
	当前线程必须拥有此对象监视器。该线程发布对此监视器的所有权并等待,直到其他线程通过调用 notify 方法,或 notifyAll 方法通知在此对象的监视器上等待的线程醒来。然后该线程将等到重新获得对监视器的所有权后才能继续执行。*/
    public final void wait() throws InterruptedException {
	wait(0);
    }



	/*在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过指定的时间量前,导致当前线程等待。*/
    public final native void wait(long timeout) throws InterruptedException;

    /* 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导致当前线程等待。*/
    public final void wait(long timeout, int nanos) throws InterruptedException {
        if (timeout < 0) {
            throw new IllegalArgumentException("timeout value is negative");
        }

        if (nanos < 0 || nanos > 999999) {
            throw new IllegalArgumentException(
				"nanosecond timeout value out of range");
        }

	if (nanos >= 500000 || (nanos != 0 && timeout == 0)) {
	    timeout++;
	}

	wait(timeout);
    }

    /*当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。*/
    protected void finalize() throws Throwable { }
}
分享到:
评论

相关推荐

    Java Object类认识

    本文将深入探讨`Object`类,以及其核心方法`equals()`与Java中的`==`操作符之间的差异。 `Object`类位于Java的核心库`java.lang`包中,它提供了基本的方法来支持对象的创建、比较和字符串表示。以下是`Object`类的...

    JAVA之Object类所有方法

    在Java编程语言中,`java.lang.Object`是所有类的根类,无论是用户自定义类还是内置类,它们都直接或间接地继承自Object类。这个类提供了许多基础方法,这些方法对于对象的操作和管理至关重要。现在,我们将深入探讨...

    Java Object实例代码

    在这个实例代码中,我们将深入探讨七个关键知识点,它们是Java Object的基础,对于理解和使用Java编程至关重要。 1. **对象**: 在Java中,一切皆为对象。当我们创建一个类并实例化它时,我们就是在创建该类的对象...

    Java Object 类高难度进阶版面试题集锦解析Java Object类高难度面试题及答案解析

    理解并熟练掌握Object类的这些方法对于Java开发者来说至关重要,尤其是在设计和实现复杂的类层次结构、比较和复制对象、优化数据结构以及进行调试时。在面试中,对这些知识点的深入理解体现了开发者的专业水平和经验...

    详解Java中Object 类的使用.rar

    在Java编程语言中,Object类是所有类的根类,无论是自定义的还是Java库中的类,它们都直接或间接地继承自Object类。这个压缩包文件"详解Java中Object 类的使用.rar"包含了对Java中Object类的深入探讨,通过阅读其中...

    java-object类

    `Object` 类作为 Java 类的基础,其提供的方法对于理解 Java 对象的行为至关重要。通过对 `equals`、`hashCode` 和 `toString` 方法的正确理解和使用,可以使程序更加健壮和易于维护。在开发过程中,合理地重写这些...

    Java -核心类库 Object类常方法 Math类常用方法 System类常用方法 基本类型包装类常用方法等

    因此了解并掌握`Object`类的方法对于深入理解Java编程至关重要。 1. **toString() 方法**: - **用途**:提供了一个方便的方式来打印或展示对象的信息。 - **默认行为**:返回对象的内存地址。 - **重写示例**:...

    java中object类实例分析

    java中object类实例分析 Object类是Java语言中所有类的父类,位于java.lang包中。它是所有Java类的终极父类,数组...我们在编写Java程序时,需要充分理解和利用Object类的方法和功能,以便于编写出高效、可靠的代码。

    Java的Object类讲解案例代码 equals()、hashCode()、finalize()、clone()、wait()

    Object类是所有Java类的根类,它定义了一些常用的方法,例如equals()、hashCode()、toString()等。本案例代码将详细展示Object类的使用方法,并提供一些实际场景下的案例,以帮助开发者更好地理解和运用这些方法。 ...

    Java面向对象(进阶)- Object类的详细概述

    这使得Object类中的方法对所有Java类都可用,体现了Java的继承性和多态性。 1. **根父类理解** - Java类层次结构始于Object类,意味着所有类都是Object类的直接或间接子类。即使我们没有显式声明父类,Java编译器...

    java中的Object类[文].pdf

    `Object`类中并没有显式的构造方法,因为当创建一个新的Java类实例时,会自动调用一个默认的构造方法。这个默认构造方法就是来自`Object`类的,即使没有在子类中定义构造方法。 2. **`clone()`方法**: `clone()`...

    详谈Java中Object类中的方法以及finalize函数作用

    总的来说,理解和掌握Object类的方法以及`finalize()`的使用是Java编程的基础,它们可以帮助我们更好地管理对象和资源,避免潜在的问题。在编写Java代码时,适时地重写这些方法可以提高代码的健壮性和效率。

    java反射实现Object转json

    在Java中,反射主要用于在运行时分析类和对象的信息,包括类名、方法名、参数类型等。对于"java反射实现Object转json"这个主题,我们将深入探讨如何使用反射机制将Java对象转换为JSON格式的数据。 首先,理解JSON...

    java 反射得到某个方法

    在Java编程语言中,反射(Reflection)是一种强大的工具,它允许程序在运行时检查和操作类、接口、字段以及方法等对象。通过反射,我们可以在不知道具体类名或方法名的情况下,动态地调用对象的方法或访问其属性。在...

    Java Object类详解_动力节点Java学院整理

    理解Object类及其方法是深入学习Java面向对象编程的基础。在实际开发中,我们经常需要重写如`toString()`, `equals()`, 和 `hashCode()` 方法来满足特定需求。同时,Object类的构造器、`registerNatives()` 和 `...

    Java程序设计:020611_Object类.ppt

    理解并掌握Object类的这些核心方法对于进行面向对象的Java编程至关重要。`toString()`和`equals()`方法尤其在比较和显示对象信息时经常被用到,而能够接收任意引用类型则让代码更加灵活,适应各种数据类型的需求。在...

    object转化为时间类型

    ### 在C#中将Object转换为时间类型...通过上述分析,我们可以了解到在C#中如何有效地将`object`类型的变量转换为`DateTime`类型,并且能够理解和掌握相关的代码实现细节。这对于提高程序的健壮性和效率都具有重要意义。

    day01【Object类、常用API】-笔记.md

    这意味着所有Java类都自动继承了`Object`类中的方法和属性。 #### 关键方法 - `public String toString()`: 返回该对象的字符串表示。默认情况下,此方法返回的是对象的类名和哈希码的十六进制表示。然而,在实际...

    java的JsonObject对象提取值方法

    在Java编程中,`JsonObject` 是用来处理JSON数据的一个关键对象。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于网络...理解这些方法的使用,将有助于在实际开发中有效地处理JSON数据。

Global site tag (gtag.js) - Google Analytics