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 { }
}
分享到:
相关推荐
本文将深入探讨`Object`类,以及其核心方法`equals()`与Java中的`==`操作符之间的差异。 `Object`类位于Java的核心库`java.lang`包中,它提供了基本的方法来支持对象的创建、比较和字符串表示。以下是`Object`类的...
在Java编程语言中,`java.lang.Object`是所有类的根类,无论是用户自定义类还是内置类,它们都直接或间接地继承自Object类。这个类提供了许多基础方法,这些方法对于对象的操作和管理至关重要。现在,我们将深入探讨...
在这个实例代码中,我们将深入探讨七个关键知识点,它们是Java Object的基础,对于理解和使用Java编程至关重要。 1. **对象**: 在Java中,一切皆为对象。当我们创建一个类并实例化它时,我们就是在创建该类的对象...
理解并熟练掌握Object类的这些方法对于Java开发者来说至关重要,尤其是在设计和实现复杂的类层次结构、比较和复制对象、优化数据结构以及进行调试时。在面试中,对这些知识点的深入理解体现了开发者的专业水平和经验...
在Java编程语言中,Object类是所有类的根类,无论是自定义的还是Java库中的类,它们都直接或间接地继承自Object类。这个压缩包文件"详解Java中Object 类的使用.rar"包含了对Java中Object类的深入探讨,通过阅读其中...
`Object` 类作为 Java 类的基础,其提供的方法对于理解 Java 对象的行为至关重要。通过对 `equals`、`hashCode` 和 `toString` 方法的正确理解和使用,可以使程序更加健壮和易于维护。在开发过程中,合理地重写这些...
因此了解并掌握`Object`类的方法对于深入理解Java编程至关重要。 1. **toString() 方法**: - **用途**:提供了一个方便的方式来打印或展示对象的信息。 - **默认行为**:返回对象的内存地址。 - **重写示例**:...
java中object类实例分析 Object类是Java语言中所有类的父类,位于java.lang包中。它是所有Java类的终极父类,数组...我们在编写Java程序时,需要充分理解和利用Object类的方法和功能,以便于编写出高效、可靠的代码。
Object类是所有Java类的根类,它定义了一些常用的方法,例如equals()、hashCode()、toString()等。本案例代码将详细展示Object类的使用方法,并提供一些实际场景下的案例,以帮助开发者更好地理解和运用这些方法。 ...
这使得Object类中的方法对所有Java类都可用,体现了Java的继承性和多态性。 1. **根父类理解** - Java类层次结构始于Object类,意味着所有类都是Object类的直接或间接子类。即使我们没有显式声明父类,Java编译器...
`Object`类中并没有显式的构造方法,因为当创建一个新的Java类实例时,会自动调用一个默认的构造方法。这个默认构造方法就是来自`Object`类的,即使没有在子类中定义构造方法。 2. **`clone()`方法**: `clone()`...
总的来说,理解和掌握Object类的方法以及`finalize()`的使用是Java编程的基础,它们可以帮助我们更好地管理对象和资源,避免潜在的问题。在编写Java代码时,适时地重写这些方法可以提高代码的健壮性和效率。
在Java中,反射主要用于在运行时分析类和对象的信息,包括类名、方法名、参数类型等。对于"java反射实现Object转json"这个主题,我们将深入探讨如何使用反射机制将Java对象转换为JSON格式的数据。 首先,理解JSON...
在Java编程语言中,反射(Reflection)是一种强大的工具,它允许程序在运行时检查和操作类、接口、字段以及方法等对象。通过反射,我们可以在不知道具体类名或方法名的情况下,动态地调用对象的方法或访问其属性。在...
理解Object类及其方法是深入学习Java面向对象编程的基础。在实际开发中,我们经常需要重写如`toString()`, `equals()`, 和 `hashCode()` 方法来满足特定需求。同时,Object类的构造器、`registerNatives()` 和 `...
理解并掌握Object类的这些核心方法对于进行面向对象的Java编程至关重要。`toString()`和`equals()`方法尤其在比较和显示对象信息时经常被用到,而能够接收任意引用类型则让代码更加灵活,适应各种数据类型的需求。在...
### 在C#中将Object转换为时间类型...通过上述分析,我们可以了解到在C#中如何有效地将`object`类型的变量转换为`DateTime`类型,并且能够理解和掌握相关的代码实现细节。这对于提高程序的健壮性和效率都具有重要意义。
这意味着所有Java类都自动继承了`Object`类中的方法和属性。 #### 关键方法 - `public String toString()`: 返回该对象的字符串表示。默认情况下,此方法返回的是对象的类名和哈希码的十六进制表示。然而,在实际...
在Java编程中,`JsonObject` 是用来处理JSON数据的一个关键对象。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于网络...理解这些方法的使用,将有助于在实际开发中有效地处理JSON数据。