码迷,mamicode.com
首页 > 其他好文 > 详细

Object类方法简介二

时间:2017-04-24 09:59:09      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:ide   owa   blog   姓名   new   程序   ==   bsp   rgs   

在学了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不保证此方法总被调用。

Object类方法简介二

标签:ide   owa   blog   姓名   new   程序   ==   bsp   rgs   

原文地址:http://www.cnblogs.com/wxywxy/p/6755012.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!