【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)
https://blog.csdn.net/m0_69908381/article/details/133474051
出自【进步*于辰的博客】
public class Object
类Object是类层次结构的根。 每个班级都有Object作为超类。 所有对象(包括数组)都实现此类的方法。
从以下版本开始:
1.0
另请参见:
Class
构造一个新对象。
创建并返回此对象的副本。
protected native Object clone() throws CloneNotSupportedException;
注译:
创建并返回此对象的副本。“copy”的确切含义可能取决于对象的类。一般的意图是,对于任何对象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返回的对象的一个或多个字段。克隆后再返回。通常,这意味着复制包含被克隆对象的内部“深层结构”的任何可变对象,并用对副本的引用替换对这些对象的引用。如果一个类只包含基本数据类型字段或对不可变对象的引用,那么通常情况下,由super返回的对象中没有字段。需要修改克隆。
类 Object 的方法clone()执行特定的克隆操作。首先,如果该对象的类没有实现接口 Cloneable,则会抛出CloneNotSupportedException异常。注意,所有数组都被认为实现了接口 Cloneable,数组类型T[]的克隆方法的返回类型是T[],其中T是任何引用类型或基本类型。否则,此方法将创建此对象的类的新实例,并使用该对象对应字段的内容初始化其所有字段,就像通过赋值一样。并且,字段的内容本身并不是克隆的。因此,该方法执行该对象的“浅拷贝”,而不是“深拷贝”操作。
类 Object 本身并不实现接口 Cloneable,因此在类为 Object 的对象上调用clone()方法将导致在运行时抛出异常。
指示某个其他对象是否“等于”此对象。
public boolean equals(Object obj) {
return (this == obj);
}
已过时。
最终确定机制本质上存在问题。
返回此 Object 类运行时的 Class 对象。
public final native Class<?> getClass();
注译:
返回的 Class 对象是由所表示类的
静态同步方法
\color{green}{静态同步方法}
静态同步方法锁定的对象。
实际的返回类型是Class extends |X|>,其中|X|是对调用getClass()的表达式的静态类型的擦除。例如,在这段代码中不需要强制类型转换:
Number n = 0;
Class<? extends Number> c = n.getClass();
返回对象的哈希码值。
public native int hashCode();
注译:
返回对象的散列码值。支持此方法是为了使用哈希表,例如java.util.HashMap提供的哈希表。
哈希码的总约定是:
hashCode(),此方法必须始终返回相同的整数,前提是对象上用于相等比较的信息没有被修改。该整数不必在应用程序的一次执行与另一次执行之间保持一致。equals(Object obj)方法比较的两个对象相等,那么对这两个对象中的每一个调用hashCode()必须产生相同的整数结果。equals(Object obj)方法比较的两个对象不相等,则不要求对这两个对象中的任一个调用hashCode()必须产生不同的整数结果。然而,程序员应该意识到,为不相等的对象生成不同的整数结果可能会提高哈希表的性能。在合理可行的情况下,由 Object 类定义的hashCode()确实为不同的对象返回不同的整数。(这通常通过将对象的内部地址转换为整数来实现,但是Java编程语言不需要这种实现技术。)
唤醒正在此对象监视器上等待的单个线程。
唤醒等待此对象监视器的所有线程。
返回对象的字符串表示形式。
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
关于hashCode(),见第5项;关于toHexString(),见Integer类的第4.28项。
导致当前线程等待它被唤醒,通常是“通知”或“中断”。
导致当前线程等待它被唤醒,通常是“通知”或“中断”,或者直到经过一定量的实时。
导致当前线程等待它被唤醒,通常是“通知”或“中断”,或者直到经过一定量的实时。
如果大家需要Java-API文档,我上传了《Java-API文档-包含5/8/11三个版本》。
本文暂缓更新。