A.所属包
   java.lang

B.声明
   public class Object

C.概述
   是所有类的父类

D.构造方法:
   Object()

E.常用成员方法
   a.protected Object clone()
     创建并返回该对象的一个副本,需要实现Cloneable接口重写此方法
   b.public boolean equals(Object obj)
      判断两个对象地址值是否相等,如果子类想要判断内容是否相等需要重写此方法
   c.protected void finalize()
      当垃圾回收器确定不存在该对象的更多引用时,由对象的垃圾回收器调用此方法回收对象,但回收时间不确定
   d.public Class<?> getClass()
      返回该对象所在类的字节码文件对象
   e.public int hashCode()
      返回该对象的哈希码值
   f.public String toString()
      返回该对象的字符串表示,即:
      this.getClass().getName()+”@”+Integer.toHexString(this.hashCode())

F.注意事项
   a.Object类时所有类的父类
   b.子类如果没有重写equals()方法默认比较的是地址值
   c.直接输出一个对象名,其实默认是调用该对象所在类的toString()方法
   d.==和equals的区别?
      ==用于基本类型是比较值,用于引用类型是比较地址值
      euqals只能用于引用类型,默认比较地址值
   e.关于hashCode()与equals()
      1.如果两个对象equals,Java运行时环境会认为他们的hashcode一定相等
      2.如果两个对象不equals,但hashcode可能相等
      3.如果两个对象hashcode相等,但不一定equals
      4.如果两个对象hashcode不相等,肯定不equals
 
  G.示例

    class MyObject implements Cloneable//这里实现了Cloneable接口,重写了clone()方法
    {
        protected Object clone()
        {
            return this;
        }
    }
    class MyObjectTest
    {
        public static void main(String[] args)
        {
            MyObject mobj1=new MyObject();
            MyObject mobj2=new MyObject();
            System.out.println(mobj1==mobj1.clone());//true
            System.out.println(mobj1.equals(mobj2));//false
            System.out.println(mobj1.hashCode());//697960108(每个人可能相同)
            System.out.println(mobj1.toString());//object.MyObject@299a06ac(每个人可能不相同)
        }
    }

 

版权声明:本文为jeenyung原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/jeenyung/p/9278463.html