了解Object类

一、了解

官方文档
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();
    }

}
//输出:垃圾回收器回收
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值