• Object类方法简介二


    在学了Object类前面的三个常用方法后,又遇到它的另外三个方法——clone()finalize()getClass(),这三个方法不经常使用,但因为在学习过程遇到了,就简单的对它们的使用做一个总结。

    1.对象克隆——clone()方法

    protected Object clone() throws CloneNotSupportedException;

    使用该方法可以克隆一个对象,即创建一个对象的副本。要使类的对象能够克隆,该类必须实现Cloneable接口。这个接口里面没有定义任何方法,属于标识接口,即给类一个特殊标签。

     1 public class Student implements Cloneable
     2 {
     3     private int num;
     4     private String name;
     5     public Student(int num,String name)
     6     {
     7         this.num=num;
     8         this.name=name;
     9     }
    10     @Override
    11     public boolean equals(Object o)
    12     {
    13         return this.num==((Student)o).num;
    14     }
    15     @Override
    16     public String toString()
    17     {
    18         return "学号:"+num+",姓名:"+name;
    19     }
    20     public static void main(String args[]) throws CloneNotSupportedException
    21     {    
    22         Student s1 = new Student(1001,"Mary");
    23         Student s2 = (Student)s1.clone();
    24         System.out.println(s1==s2);//false
    25         System.out.println(s1.equals(s2));//true
    26         System.out.println(s1.getClass().getName());//ClassNotes.Student
    27         System.out.println(s1.hashCode());//366712642
    28         System.out.println(s2.hashCode());//366712642
    29         System.out.println(s1);//学号:1001,姓名:Mary
    30         System.out.println(s2);//学号:1001,姓名:Mary
    31         
    32     }
    33 }

    这个例子使用了Object类的五种方法,其中clone()方法声明抛出CloneNotSupportedException异常,程序在main()方法的声明中抛出了该异常。

    2.getClass()方法

     public final native Class<?> getClass();

    该方法,它会返回一个你的对象所对应的一个Class的对象,这个返回来的对象保存着你的原对象的类信息,比如你的原对象的类名叫什么,类里有什么方法,字段等,和反射相关。

    Date date = new Date();
    Class<?>cls = date.getClass();//得到类的包名

    3.对象终结——finalize()方法

    protected void finalize() throws Throwable;

    在对象被销毁之前,垃圾回收站允许对象调用该方法进行清理工作,清除在对象外被分配的资源。

     1 public class Student implements Cloneable
     2 {
     3     @Override
     4     protected void finalize() throws Throwable
     5     {
     6         System.out.println("The object is destroyed");
     7     }
     8     public static void main(String args[])
     9     {    
    10         Student s1 = new Student();
    11         Student s2 = new Student();
    12         s1 = null;
    13         s2 = null;
    14         System.gc();//执行垃圾回收
    15     }
    16 }

    输出结果:

    The object is destroyed
    The object is destroyed

    GC在回收对象之前自动调用finalize()方法,而且需要显示地调用垃圾回收方法(System.gc()),并且需要有new出来的尚未被销毁的匿名对象的存在,finalize()方法才一定会被调用。在某些情况下,finalize ()方法可能不会运行完成或可能根本不运行,JVM不保证此方法总被调用。

  • 相关阅读:
    爱情的诗·1~5节
    人生的诗·381~385节
    人生的诗·375~380节
    python数据类型初始1
    python编码知识初始_ASCII码,Unicode,Utf-8,GBK
    Python运算符,逻辑运算
    python格式化输出%,while else
    pycharm使用教程链接+部分练习题01
    python流程控制-条件语句If,while循环
    python基础数据类型初始,用户交互
  • 原文地址:https://www.cnblogs.com/wxywxy/p/6755012.html
Copyright © 2020-2023  润新知