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

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

protected Object clone() throws CloneNotSupportedException;

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

 public class Student implements Cloneable
{
private int num;
private String name;
public Student(int num,String name)
{
this.num=num;
this.name=name;
}
@Override
public boolean equals(Object o)
{
return this.num==((Student)o).num;
}
@Override
public String toString()
{
return "学号:"+num+",姓名:"+name;
}
public static void main(String args[]) throws CloneNotSupportedException
{
Student s1 = new Student(1001,"Mary");
Student s2 = (Student)s1.clone();
System.out.println(s1==s2);//false
System.out.println(s1.equals(s2));//true
System.out.println(s1.getClass().getName());//ClassNotes.Student
System.out.println(s1.hashCode());//
System.out.println(s2.hashCode());//
System.out.println(s1);//学号:1001,姓名:Mary
System.out.println(s2);//学号:1001,姓名:Mary }
}

这个例子使用了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;

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

 public class Student implements Cloneable
{
@Override
protected void finalize() throws Throwable
{
System.out.println("The object is destroyed");
}
public static void main(String args[])
{
Student s1 = new Student();
Student s2 = new Student();
s1 = null;
s2 = null;
System.gc();//执行垃圾回收
}
}

输出结果:

The object is destroyed
The object is destroyed

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

Object类方法简介二的更多相关文章

  1. 多线程(二)Object类方法、线程的操作sleep(),join(),interrupt(),yield()

    四.Object类简介 Object类是所有类的超类,之所以放在线程部分是因为其方法很多是和线程有关的.比如以下三个: wait()方法.wait(long timeout)和wait(long ti ...

  2. {Django基础七之Ajax} 一 Ajax简介 二 Ajax使用 三 Ajax请求设置csrf_token 四 关于json 五 补充一个SweetAlert插件(了解)

    Django基础七之Ajax 本节目录 一 Ajax简介 二 Ajax使用 三 Ajax请求设置csrf_token 四 关于json 五 补充一个SweetAlert插件(了解) 一 Ajax简介 ...

  3. {Django基础七之Ajax} 一 Ajax简介 二 Ajax使用 三 Ajax请求设置csrf_token 四 关于json 五 补充一个SweetAlert插件(了解)

    {Django基础七之Ajax} 一 Ajax简介 二 Ajax使用 三 Ajax请求设置csrf_token 四 关于json 五 补充一个SweetAlert插件(了解)   Django基础七之 ...

  4. Java菜鸟学习笔记--面向对象篇(十六):Object类方法

    Object类 什么是Object类? Object类是所有Java类的祖先,每个类都使用 Object 作为超类,所有对象(包括数组)都实现这个类的方法Object类是类层次结构的根,Object类 ...

  5. Windbg 脚本命令简介 二, Windbg command

    Windbg  脚本命令简介 二, Windbg  script command $<, $><, $$<, $$><, $$>a< (Run Scri ...

  6. Java Object类方法解析

    Java Object类方法解析 在Java中Object是所有类的父类,任何类都默认继承Object,其提供的方法主要有以下几种: registerNatives() hashCode和equale ...

  7. WPF Binding值转换器ValueConverter使用简介(二)-IMultiValueConverter

    注: 需要继承IMultiValueConverter接口,接口使用和IValueConverter逻辑相同. 一.MultiBinding+Converter 多值绑定及多值转换实例 当纵向流量大于 ...

  8. Hibernate框架简介(二)基本使用增、删、改、查

    一.Hibernate框架简介 Hibernate是一个优秀的Java持久化层解决方案,是当今主流的对象-关系映射(ORM,ObjectRelationalMapping)工具 1.1.理解持久化 瞬 ...

  9. Page Object设计模式(二)——poium测试库

    一.简介 poium是一个基于Selenium/appium的Page Object测试库,最大的特点是简化了Page层元素的定义. 项目地址:https://github.com/SeldomQA/ ...

随机推荐

  1. caffe介绍

  2. C - Lucky Numbers (easy)

    Problem description Petya loves lucky numbers. Everybody knows that positive integers are lucky if t ...

  3. bootstrap.min.js:6 Uncaught Error: Bootstrap's JavaScript requires jQuery at bootstrap.min.js:6

    自己写了个Django系统,用到了Django-bootstrap3结果在浏览器控制台发现报错:bootstrap.min.js:6 Uncaught Error: Bootstrap's JavaS ...

  4. Android TV 选中高亮显示

    1.开发Android TV APP, 使用遥控器选中按钮或者选着其它菜单 如果没有高亮显示,就看不出选中哪个按钮或者菜单 2.在drawable 添加 border_red.xml 设置选中高亮 & ...

  5. 基于 CC2530 的温度采集系统(未定稿)

    前言 最近在自学 Zigbee,每天的主要是任务是:看博客,看 CC2530 的 datasheet 和实践,熟悉片上的 SFR 以及控制板子. 学和做内容包括:IO.外部中断.Timer1/3/4. ...

  6. WM消息大全

    消息名 消息值 说明 WM_CREATE 0x0001 应用程序创建一个窗口 WM_DESTROY 0x0002 一个窗口被销毁 WM_MOVE 0x0003 移动一个窗口 WM_SIZE 0x000 ...

  7. CDC之fast->slow (1)

    Sampling slower signals into faster clock domains causes fewer potential problems than sampling fast ...

  8. jquery的attr和prop

    注意不同版本的attr和prop,attr适用于自定义dom值,prop适用于带有固有属性

  9. Mysql正则

    摘自:http://www.runoob.com/mysql/mysql-regexp.html 模式 描述 ^ 匹配输入字符串的开始位置.如果设置了 RegExp 对象的 Multiline 属性, ...

  10. POJ_1061_扩展欧几里德

    青蛙的约会 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 107027   Accepted: 21321 Descript ...