8.认识Object类

  1. 什么是Object类
    1. 类层次结构的根类
    2. 所有类都直接或间接继承自该类
  2. 它的常用属性与方法
    1. finalize():回收对象时调用此方法
      protected void finalize()
      throws Throwable
      {}

    2. getClass():获取对象字节码描述类
      public final native Class<?> getClass();

    3. hashCode():获取对象哈希值,实际是对象在内存十进制的表示

    4. toString():返回对象字符串表示形式
      public String toString()
      {
      return getClass().getName() + "@" + Integer.toHexString(hashCode());//转换成16进制表示
      }
      当然这种输出意义不大,通常会重写此方法,让他输出类成员信息

    5. equals(Object paramObj):比较两个对象内存地址是否相等,底层是用判断的
      public boolean equals(Object paramObject)
      {
      return this == paramObject;
      }
      一般会重写equals方法,不然与
      无区分
      1.字符串重写此方法后:用于判断两字符串内容是否相同
      public boolean equals(Object paramObject)
      {
      if (this == paramObject) {
      return true;
      }
      if ((paramObject instanceof String))
      {
      String str = (String)paramObject;
      int i = value.length;
      if (i == value.length)
      {
      char[] arrayOfChar1 = value;
      char[] arrayOfChar2 = value;
      for (int j = 0; i-- != 0; j++) {
      if (arrayOfChar1[j] != arrayOfChar2[j]) {
      return false;
      }
      }
      return true;
      }
      }
      2.对象重写equals方法,可按值比较
      /**
      * 按 value 比较
      */
      @Override
      public boolean equals(Object obj) {
      if (this == obj)
      return true;
      if (obj == null)
      return false;
      if (getClass() != obj.getClass())
      return false;
      EnumEmergencyPlanLevel other = (EnumEmergencyPlanLevel) obj;
      if (value == null) {
      if (other.value != null)
      return false;
      } else if (!value.equals(other.value))
      return false;
      return true;
      }

    6. equals()与==的区别

      1. 前者只能比较引用数据类型
      2. 前者可以根据需要重写
      3. 后者比较值类型时,比较的值是否相同
      4. 后者比较引用数据类型时:比较的是内存地址是否相同(即是否是同一对象)
原文地址:https://www.cnblogs.com/River111/p/9593223.html