黑马程序员技术交流社区
标题:
一点有关Object
[打印本页]
作者:
fmi110
时间:
2015-7-7 18:15
标题:
一点有关Object
Object
/**
Object:所有对象的直接或者间接父类
该类中定义了所有对象都具备的功能
***************************************************
Object类中定义的方法
protected Object clone()
创建并返回此对象的一个副本。
boolean equals(Object obj)
指示其他某个对象是否与此对象“相等”。
protected void finalize()
当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
Class<?> getClass()
返回此 Object 的运行时类。
int hashCode()
返回该对象的哈希码值。
void notify()
唤醒在此对象监视器上等待的单个线程。
void notifyAll()
唤醒在此对象监视器上等待的所有线程。
String toString()
返回该对象的字符串表示。
void wait()
在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。
void wait(long timeout)
在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,
或者超过指定的时间量前,导致当前线程等待。
void wait(long timeout, int nanos)
在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,
或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导致当前线程等待。
***********************************************************************************
Object类中已经提供了对对象是否相同发比较方法。
public boolean equals(Object obj)
指示其他某个对象是否与此对象“相等”。
如果自定义类中也有比较相同的功能,没必要重新定义
只要沿袭父类中的共鞥呢,建立属于自己的特有的方法
*/
/**建立属于自己的比较方法*/
class Demo //extends Object
{
private int num ;
Demo(int num) //构造函数初始化类
{
this.num = num ;
}
/*复盖Object类中的equals方法*/
public boolean equals(Object obj)// Object obj = new Demo();
{
if(obj instanceof Demo)//判断传递的对象是否是该类的实例,增强健壮性
{
Demo o = (Demo)obj; //Objedct类中没定义有num,需要向下转型
return this.num == o.num ;
}
else
return false; //另一处理是抛出异常
}
/*复写Object类中的toString方法,根据自己需要返回有象征意义的字符串
public String toString()
{
return "Demo"+num;
}
*/
}
class P
{
}
class Demo1
{
public static void main(String[] args)
{
Demo d1 = new Demo(8);
// Demo d2 = new Demo(2);
Class c = d1.getClass();
//// System.out.println(d1.equals(d2)); //比较内存地址(未复写Object中的方法时)
// //System.out.println(d1==d2); //d1==d2与d1.equals(d2)等价(未复写Object中的方法时)
//
// P p = new P();
// System.out.println(d1.equals(p));
// System.out.println(c.getName());
// System.out.println(d1.getClass().getName());
//
// System.out.println("d1的哈希值:"+d1.hashCode()+" 十六进制表示:"
// +Integer.toHexString(d1.hashCode()));
System.out.println(d1.toString());//返回对象的字符串表现形式
//实际返回 getClass().getName() + '@' + Integer.toHexString(hashCode())
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2