一、了解
官方文档
public class Object
Class Object is the root of the class hierarchy. Every class has Object as a superclass. All objects, including arrays, implement the methods of this class.
所有层次结构的类都把Object作为基础,每个类都把Object作为自己的超类(基类),所有的对象。包括数组都实现了这个类(Object)的方法。
- 最初设计的目的是为了实现一些公共代码可以重用
- 我们自定义的类也继承了Object类
二、Object类的方法
该类的很多方法是native关键字修饰的。这样的方法叫做本地方法,没有方法体。它们的方法体是系统的本地函数去实现的,比如c语言函数去实现。
1、protected Object clone() throws CloneNotSupportedException
:创建并且返回这个对象的副本,这个副本取决于这个对象的类(因为只有创建这个对象的类实现了Cloneable接口,)通常说这个方法适用于任何对象。
package com.baidu.vo;
import java.io.Serializable;
//雇员表简单Java类
public class Emp implements Cloneable {
private String ename;
private Integer empno;
public Emp(String ename, Integer empno) {
this.ename = ename;
this.empno = empno;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public Integer getEmpno() {
return empno;
}
public void setEmpno(Integer empno) {
this.empno = empno;
}
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
public class Test {
public static void main(String[] args) throws CloneNotSupportedException {
Emp emp1 = new Emp("李四",10089);
Emp emp2 = (Emp) emp1.clone();
System.out.println(emp2.getEname()+" "+emp2.getEmpno());
}
}
//输出:李四 10089
2、public boolean equals(Object obj)
:判断一个对象是否和当前对象相等,这个方法为非空对象的引用实现了一个等价关系判断。
- 自反性: 对于非空引用值x:x.equals(x) 返回true
- 对称性: 对于非空引用值x,y.如果x.equals(y)返回true,则y.equals(x)一定返回true。
- 传递性: 对于非空引用值x,y,z.如果x.equals(y)返回true,y.equals(z)返回true,则x.equals(z)返回true
- 持久性: 对于非空引用值x,y.如果用于对象比较的信息都没有被修改,那么多次执行x.equals(y)一直都返回true和false.
- 对于任意非空引用值x,x.equals(null)
永远返回的是false
3、protected void finalize() throws Throwable
:当垃圾收集器认为这个对象没有引用了(没有栈内存空间指向了)就会调用这个对象的finalize()方法。一个子类要覆写这个方法区释放一些系统资源或者去执行一些清理操作。
package com.baidu.vo;
import java.io.Serializable;
//雇员表简单Java类
public class Emp {
private String ename;
private Integer empno;
public Emp(String ename, Integer empno) {
this.ename = ename;
this.empno = empno;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public Integer getEmpno() {
return empno;
}
public void setEmpno(Integer empno) {
this.empno = empno;
}
@Override
protected void finalize() throws Throwable {
super.finalize();
System.out.println("垃圾回收器回收");
}
}
package com.CoderLB;
import com.baidu.vo.Emp;
public class Test {
public static void main(String[] args) throws Exception {
Emp emp1 = new Emp("李四",10089);
emp1=null;
System.gc();
}
}
//输出:垃圾回收器回收