关闭

java中object常用方法

标签: javaobject方法
3299人阅读 评论(0) 收藏 举报
分类:

1.clone()

protected Object clone()
                throws CloneNotSupportedException
创建并返回此对象的一个副本。“副本”的准确含义可能依赖于对象的类。

1>. Clone&Copy
     假设现在有一个Employee对象,Employee tobby =new Employee(“CMTobby”,5000),通
常我们会有这样的赋值Employee cindyelf=tobby,这个时候只是简单了copy了一下reference,cindyelf和tobby都指向内存中同一个object,这样cindyelf或者tobby的一个操作都可能影响到对方。打个比方,如果我们通过cindyelf.raiseSalary()方法改变了salary域的值,那么tobby通过getSalary()方法得到的就是修改之后的salary域的值,显然这不是我们愿意看到的。我们希望得到tobby的一个精确拷贝,同时两者互不影响,这时候我们就可以使用Clone来满足我们的需求。Employee cindy=tobby.clone(),这时会生成一个新的Employee对象,并且和tobby具有相同的属性值和方法。
      2>. Shallow Clone&Deep Clone
Clone是如何完成的呢?Object在对某个对象实施Clone时对其是一无所知的,它仅仅是简单地执行域对域的copy,这就是Shallow Clone。这样,问题就来了咯,以Employee为例,它里面有一个域hireDay不是基本型别的变量,而是一个reference变量,经过Clone之后就会产生一个新的Date型别的reference,它和原始对象中对应的域指向同一个Date对象,这样克隆类就和原始类共享了一部分信息,而这样显然是不利的,过程下图所示:

 

这个时候我们就需要进行deep Clone了,对那些非基本型别的域进行特殊的处理,例如本例中的hireDay。我们可以重新定义Clone方法,对hireDay做特殊处理,如下代码所示:

  1.    class Employee implements Cloneable  
  2.   
  3. {  
  4.         public Object clone() throws CloneNotSupportedException  
  5.         {  
  6.          Employee cloned = (Employee) super.clone();  
  7.       cloned.hireDay = (Date) hireDay.clone()  
  8.       return cloned;  
  9.         }  
  10. }  

 

3>. Clone()方法的保护机制

在Object中Clone()是被申明为protected的,这样做是有一定的道理的,以Employee

类为例,通过申明为protected,就可以保证只有Employee类里面才能“克隆”Employee对象,原理可以参考我前面关于public、protected、private的学习笔记。

4>. Clone()方法的使用

Clone()方法的使用比较简单,注意如下几点即可:

a. 什么时候使用shallow Clone,什么时候使用deep Clone,这个主要看具体对象的域是什么性质的,基本型别还是reference variable

b. 调用Clone()方法的对象所属的类(Class)必须implements Clonable接口,否则在调用Clone方法的时候会抛出CloneNotSupportedException。


2.equals()

3.finalize()
当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
4.getclass()
返回此 Object 的运行时类。
5.hashcode()
  返回该对象的哈希码值。
6.notify()
唤醒在此对象监视器上等待的单个线程。
7.notifyAll()
 唤醒在此对象监视器上等待的所有线程。
8.toString()
public String toString()
返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。

Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:

getClass().getName() + '@' + Integer.toHexString(hashCode())
 

9.wait()























 

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Java学习笔记之一(深入理解Object类中方法)

[size=small]   在根类Object中包含一下方法: clone(); equals(); finalize(); getClass();[align=left][/ali...
  • my383617487
  • my383617487
  • 2015-05-23 17:38
  • 3897

Object类有哪些方法

Object是所有类的父类,任何类都默认继承Object。Object类到底实现了哪些方法? 1.clone方法 保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用...
  • k678mh
  • k678mh
  • 2013-02-20 15:29
  • 12494

Object类的方法

前言Java语言不同于C++语言,是一种单根继承结构语言,也就是说,Java中所有的类都有一个共同的祖先。这个祖先就是Object类。object类的结构 如图可知,Object类有12个成员方法,...
  • u013894427
  • u013894427
  • 2016-12-05 18:20
  • 7424

Object类中的五种方法

前言:在咱大易途的第十三天,未来的路还很长,必须脚踏实地地把每天讲的内容多复习几遍,代码多敲几遍,不能好高骛远 基本数据类型不会继承Object类 clone()克隆一个对象的方法 1.先覆盖克隆方法...
  • tomcmd
  • tomcmd
  • 2017-02-06 19:07
  • 1220

object类的9个方法

object类有9个方法
  • baidu_21578557
  • baidu_21578557
  • 2016-04-15 08:42
  • 1424

Object有哪些基本的方法

1.clone方法 保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。 2.getClass方...
  • u013812939
  • u013812939
  • 2015-07-08 09:27
  • 2138

java Object类常用方法浅解

java Object类常用方法浅解
  • xu511739113
  • xu511739113
  • 2016-08-26 15:14
  • 2057

js中Object常用方法和属性

继之前js中数组的常用方法之后,Object的常用方法和属性也是很常用的。故,总结之。 一、属性 Object自带一个prototype的属性,即Object.prototype,Object.p...
  • wlwanglu
  • wlwanglu
  • 2016-08-19 17:33
  • 17133

Object类 Object常用成员方法

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和...
  • u011616739
  • u011616739
  • 2016-12-21 21:18
  • 824

Object类中的方法介绍

from:http://www.blogjava.net/jiafang83/archive/2008/12/05/244510.html  类Object是类层次结构的根类,每一个类都使用Ob...
  • linyushan11
  • linyushan11
  • 2015-02-11 17:49
  • 1718
    个人资料
    • 访问:350523次
    • 积分:5805
    • 等级:
    • 排名:第5169名
    • 原创:240篇
    • 转载:29篇
    • 译文:2篇
    • 评论:34条
    最新评论