java.lang.object,是Java中所有类(当然Object类除外)的终极父类,其中数组也继承了Object类,但是接口是不继承Object类的。
Object中方法如下(11个):
Class<> getClass(); boolean equals(Object obj); int hashCode(); protected Object clone(); protected void finalize(); String toString(); void wait(); void wait(long timeout); void wait(long timeout, int nanos); void notify(); void notifyAll();
1、protected Object clone();
作用:创建并返回此对象的一个副本。
注意:
- 要执行clone()方法,对象所属的类必须实现Cloneable接口,否则会抛出CloneNotSupportedException。
- 所有的数组都被视为实现了Cloneable接口;
- Object类本身不实现Cloneable接口;
- 谨记返回的是Object类型,所以有时候可能需要强制类型转换。
如何工作:
Object将clone()作为一个本地方法来实现,代码是存放在本地代码库的。当代码执行时,将会检查调用对象的类(或者父类)是否实现了java.lang.Cloneable接口,如果没有实现,则会抛出异常。如果实现,clone()则会创建一个新的对象,并将原来的对象的内容复制到新对象中,最后返回这个新对象的引用。
浅克隆:也叫做浅拷贝,仅仅复制对象本身的成员变量,对于该对象引用变量中引用的对象,不创建副本,只是复制引用变量,指向同一个对象。这样你对副本进行修改的时候,就可能影响到源本。如果一个对象中的成员变量都是基本类型,或者其引用的对象都是不可改变的,使用浅克隆效果很好。
深克隆:也叫做深复制,不仅会复制此时对象的成员变量,对于该对象引用的对象,深克隆也会对其创建副本。
2、boolean equals(Object obj);