今天有空来总结一下Java.lang包中的Object类,如有不当请多指教!
Object类是Java中其他所有类的父类。
Object类位于java.lang包中,java.lang包包含着Java最基础和核心的类,在编译时会自动导入。
Object类没有定义属性,一共有12个方法,具体如下:
registerNatives() clone() getClass() hashCode() equals(Object obj) toString() notify() notifyAll() wait() wait(long timeout) wait(long timeout, int nanos) finalize()
接下来我们来对这些方法逐个介绍。
registerNatives
private static native void registerNatives(); static { registerNatives(); }
registerNatives函数前面有 native
关键字修饰,Java中, 用native关键字修饰的函数表明该方法的实现并不是在Java中去完成, 而是由C/C++去完成,并被编译成了.dll,由Java去调用。
方法的具体实现体在dll文件中,对于不同平台,其具体实现应该有所不同。
clone
protected native Object clone() throws CloneNotSupportedException;
clone函数返回的是一个引用,指向的是新的clone出来的对象,此对象与原对象分别占用不同的堆空间。只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。
假设现在有一个Person对象,Person person1 =new Person("czy",18);通常会有这样的复制
Person person2=person1,这个时候只是简单了copy了一下reference,person1和person2都指向内存中同一个object,这样person1或者person2的一个操作都可能影响到对方。显然这不是我们愿意看到的。我们希望得到tobby的一个精确拷贝,同时两者互不影响,这时候我们就可以使用Clone来满足我们的需求。
Person person2=person1.clone(),这时会生成一个新的Person对象,并且和person1具有相同的属性值和方法。
https://www.cnblogs.com/lwbqqyumidi/p/3693015.html