A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© fmi110 高级黑马   /  2015-7-7 18:15  /  516 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Object
  1. /**
  2. Object:所有对象的直接或者间接父类
  3. 该类中定义了所有对象都具备的功能

  4. ***************************************************

  5. Object类中定义的方法

  6.         protected  Object clone()
  7.                           创建并返回此对象的一个副本。

  8.         boolean equals(Object obj)
  9.                           指示其他某个对象是否与此对象“相等”。

  10.         protected  void finalize()
  11.                           当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
  12.          
  13.         Class<?> getClass()
  14.                           返回此 Object 的运行时类。

  15.         int hashCode()
  16.                          返回该对象的哈希码值。

  17.         void notify()
  18.                          唤醒在此对象监视器上等待的单个线程。

  19.         void notifyAll()
  20.                          唤醒在此对象监视器上等待的所有线程。

  21.         String toString()
  22.                          返回该对象的字符串表示。

  23.         void wait()
  24.                          在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。

  25.         void wait(long timeout)
  26.                          在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,
  27.                          或者超过指定的时间量前,导致当前线程等待。
  28.         void wait(long timeout, int nanos)
  29.                          在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,
  30.                          或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导致当前线程等待。

  31. ***********************************************************************************

  32. Object类中已经提供了对对象是否相同发比较方法。
  33.        
  34.         public boolean equals(Object obj)
  35.                 指示其他某个对象是否与此对象“相等”。

  36. 如果自定义类中也有比较相同的功能,没必要重新定义
  37. 只要沿袭父类中的共鞥呢,建立属于自己的特有的方法

  38. */

  39. /**建立属于自己的比较方法*/
  40. class Demo //extends Object
  41. {
  42.         private int num ;
  43.         Demo(int num)  //构造函数初始化类
  44.         {
  45.                 this.num = num ;
  46.         }
  47. /*复盖Object类中的equals方法*/
  48.         public boolean equals(Object obj)// Object obj = new Demo();
  49.         {
  50.                 if(obj instanceof Demo)//判断传递的对象是否是该类的实例,增强健壮性
  51.                 {
  52.                         Demo o = (Demo)obj; //Objedct类中没定义有num,需要向下转型
  53.                         return this.num == o.num ;
  54.                 }
  55.                 else
  56.                         return false; //另一处理是抛出异常
  57.         }
  58. /*复写Object类中的toString方法,根据自己需要返回有象征意义的字符串
  59.         public String toString()
  60.         {
  61.                 return "Demo"+num;
  62.         }
  63. */
  64. }

  65. class P
  66. {
  67. }

  68. class  Demo1
  69. {
  70.         public static void main(String[] args)
  71.         {
  72.                 Demo d1 = new Demo(8);
  73. //                Demo d2 = new Demo(2);
  74.                 Class c = d1.getClass();

  75. ////                System.out.println(d1.equals(d2)); //比较内存地址(未复写Object中的方法时)
  76. //                //System.out.println(d1==d2);                //d1==d2与d1.equals(d2)等价(未复写Object中的方法时)
  77. //
  78. //                P p = new P();
  79. //                System.out.println(d1.equals(p));
  80. //                System.out.println(c.getName());
  81. //                System.out.println(d1.getClass().getName());
  82. //
  83. //                System.out.println("d1的哈希值:"+d1.hashCode()+"        十六进制表示:"
  84. //                                                                                +Integer.toHexString(d1.hashCode()));

  85.                 System.out.println(d1.toString());//返回对象的字符串表现形式
  86.                 //实际返回 getClass().getName() + '@' + Integer.toHexString(hashCode())

  87.         }
  88. }
复制代码


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马