`
yajie
  • 浏览: 206534 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Java常用类 Object类简单用法和深入

阅读更多
  在JAVA 开发,也许我们常常调用各种类库,很少用到java.lang.Object,至少到现在我是很少用到哦,也许是自己的水平问题吧,不过做为JAVA程序员,还是有必要去了解下
Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。

1.Object类
java.lang.Object
类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。
常用方法:
public native int hashCode();
返回该对象的哈希码值

public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
返回该对象的字符串表示。建议所有子类都重写此方法。

public boolean equals(Object obj) {
return (this == obj);
}
返回其他某个对象是否与此对象“相等”。
注意:当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。
String类重写了equals()和hashCode()方法,可以参考

protected void finalize() throws Throwable {}
当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。子类重写 finalize 方法,以配置系统资源或执行其他清除。

protected native Object clone() throws CloneNotSupportedException;
创建并返回此对象的一个副本.所有要进行"克隆"的对象所属的类必须实现java.lang.Cloneable接口.下面给出一个实例实现深度拷贝功能:

/**
* clone()方法的应用
*/
package com.java.basic;

/**
* @author Administrator
*
*/
class Person implements Cloneable {

private String name;
private int age;

public String getName() {
  return name;
}
public void setName(String name) {
  this.name = name;
}
public int getAge() {
  return age;
}
public void setAge(int age) {
  this.age = age;
}

public Person() {
  super();
}

public Person(String name, int age) {
  this();
  this.name = name;
  this.age = age;
}


@Override
public String toString() {
  // TODO Auto-generated method stub
  return "Name:" + this.name + "\tAge:" + age;
}
@Override
public Object clone() {
  Person p = null;  
  try {
   p = (Person) super.clone();
  } catch (CloneNotSupportedException e) {
   e.printStackTrace();
  }
  return p;
}
}



/**
* clone()方法的应用
*/
package com.java.basic;

/**
* @author Administrator
*
*/
public class Book implements Cloneable {

String bookName;
double price;
Person author;

public Book(String bookName, double price, Person author) {
  super();
  this.bookName = bookName;
  this.price = price;
  this.author = author;
}

@Override
public Object clone() {
  Book book = null;
  try {
   book = (Book) super.clone();
  } catch (CloneNotSupportedException e) {  
   e.printStackTrace();
  }
  book.author = (Person) this.author.clone();
  return book;
}

@Override
public String toString() {
  // TODO Auto-generated method stub
  return "bookName:" + bookName + "\t" + "price:" + price + "\t" + author;
}

}

/**
* 深度clone()方法的测试
*/
package com.java.basic;

/**
* @author Administrator
*
*/
public class TestDeepCopy {

/**
  * @param args
  */
public static void main(String[] args) {
  // TODO Auto-generated method stub
  Book b1 = new Book("Java编程", 30.50, new Person("张三", 34));
  Book b2 = (Book) b1.clone();
  
  b2.price = 44.0;
  b2.author.setAge(45);
  b2.author.setName("李四");
  b2.bookName = "Java开发";
  
  System.out.println(b1);
  System.out.println(b2);
}

}
分享到:
评论

相关推荐

    Java的Object类讲解案例代码 equals()、hashCode()、finalize()、clone()、wait()

    本案例代码将详细展示Object类的使用方法,并提供一些实际场景下的案例,以帮助开发者更好地理解和运用这些方法。 这份案例代码适合以下人群: Java初学者:如果你是刚开始学习Java编程,那么Object类是一个重要的...

    JAVA基础课程讲义

    Java中IO流类的体系 149 四个IO基本抽象类 150 InputStream 150 OutputStream 150 常用InputStream和OutputStream子类用法 150 FileInputStream和FileOutputStream 150 ByteArrayInutStream和ByteArrayOutputStream ...

    疯狂JAVA讲义

    学生提问:既然内部类是外部类的成员,是否可以为外部类定义子类,在子类中再定义一个内部类来重写其父类中的内部类? 211 6.7.4 局部内部类 211 6.7.5 匿名内部类 212 6.7.6 闭包(Closure)和回调 215 6.8 ...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    如何使用方法的返回值? 166 7.4.4 使用return结束方法 166 7.5 方法重载(overload):给汽车加速添个限制 168 7.5.1 什么是方法的签名 168 7.5.2 什么是重载?为什么要重载? 168 7.5.3 给汽车加个重载的方法...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    如何使用方法的返回值? 166 7.4.4 使用return结束方法 166 7.5 方法重载(overload):给汽车加速添个限制 168 7.5.1 什么是方法的签名 168 7.5.2 什么是重载?为什么要重载? 168 7.5.3 给汽车加个重载的方法...

    Java开发详解.zip

    010201_【第2章:简单Java程序】_简单Java程序笔记.pdf 010301_【第3章:Java基础程序设计】_Java数据类型笔记.pdf 010302_【第3章:Java基础程序设计】_运算符、表达式与语句笔记.pdf 010303_【第3章:Java基础程序...

    java设计模式CatalogDAOFactory是典型的工厂方法

    是因为 SimpleFactory内,生产Sample和生产Sample2的方法之间有一定联系,所以才要将这两个方法捆绑在一个类中,这个工厂类有其本身特征,也许制造过程是统一的,比如:制造工艺比较简单,所以名称叫SimpleFactory。...

    二十三种设计模式【PDF版】

    使用类再生的两个方式:组合(new)和继承(extends),这个已经在 thinking in java中提到过. 设计模式之 Proxy(代理) 以 Jive 为例,剖析代理模式在用户级别授权机制上的应用 设计模式之 Facade(门面?) 可扩展的使用...

    JSP高级编程

    这一部分主要讲述如何使用JSP进行大型Web应用的开发,为了方便读者学习,本书还专门讲述了SUN公司的J2SDKEE和B趴公司的Webloglc应用服务器的基本使用方法。 JSP可以在各种操作系统和各种Web服务器下使用,其代码基本...

    webUIAuto:基于Java selenium的web 自动化

    webUIAuto 基于Java selenium的web 自动化 ...没有使用TestNG的dataprovider,主要是一开始有考虑把测试过程中,产生的数据,导出来,testng的dataprovider还没有深入了解是否可以导出。 Demo UI_Demo中,baidu的首页

    asp.net知识库

    动态调用对象的属性和方法——性能和灵活性兼备的方法 消除由try/catch语句带来的warning 微软的应试题完整版(附答案) 一个时间转换的问题,顺便谈谈搜索技巧 .net中的正则表达式使用高级技巧 (一) C#静态成员和...

    Ext Js权威指南(.zip.001

    1.2.6 在java中使用json / 12 1.2.7 更多有关json的信息 / 15 1.3 ext js 4概述 / 15 1.4 ext js的开发工具的获取、安装与配置介绍 / 18 1.4.1 ext designer / 18 1.4.2 在visual studio中实现智能提示 / 23 ...

    C#微软培训资料

    18.2 在 C #代码中调用 C++和 VB 编写的组件 .240 18.3 版 本 控 制 .249 18.4 代 码 优 化 .252 18.5 小 结 .254 第五部分 附 录 .255 附录 A 关 键 字.255 附录 B 错 误 码.256 附录 C .Net 名字空间...

    JSP/Servlet

    JavaBean是一個純綷的Java類別,它遵守一些規則與命名方式,它是一個公開(public)的類別,具有公開的setter與getter方法,在JSP中可以使用它將程式的邏輯處理與呈現部份分離。 簡介 JavaBean 深入 JavaBean ...

    SCON工具源码

    scons 命令的输出显示了可执行程序 helloscons2 如何由多个源文件而生成,以及在 SConstruct 中定义的 LIBS,LIBPATH 和 CCFLAGS 如何被使用。 可见,即使对于复杂的项目,SCons 的编译配置文件也很简单。除此之外,...

    cms后台管理

    3.0.2-final-src,在src文件夹下会看到有三个压缩文件,如果只想进行普通的二次开发,可以只导入cms这个源码,删除jeecms-cms-identity-3.0.2-final.jar即可,如果想进行深入的二次开发,需要导入common和core源码,...

Global site tag (gtag.js) - Google Analytics