2020-02-27(观看视频笔记)

1、Object类(java.lang.Object)

  (1)类Object是类层次的根类,每个类都使用Object作为超类。

  (2)每个类都直接或者间接的继承自Object类。

  (3)构造方法:

      public Object();(只有一个默认的无参构造)

      子类的默认构造方法默认访问的是父类Object的午餐构造方法。

  (4)public in hashCode() : 返回该对象的哈希码值。

      例:Student s1 = new Student();

        System.out.println(s1.hashCode());

        Student s2 = new Student();

        System.out.println(s2.hashCode());

        其中s1和s2的哈希值不同。

      注意:哈希值是根据哈希算法计算出来的一个值,这个值和地址值有关,但不是实际地址值。

  (5)public final Class getClass():返回此Object的运行时类

      Class类的方法:

        public String getName():以String的形式返回此Class对象所表示的实体(类、接口、数组类、基本类型或者void)名称。

      例:Student s = new Student();

        Class c = s.getClass();    //返回一个Class对象

        String str = c.getName();

        System.out.println(str);    //打印全路径名称,包名....类名

  (6)public String toString():返回该对象的字符串表示。

      没有重写的之前:toString()方法的值等价于

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

    Integer类下的一份静态方法:

      public static String toHexString(int i):把一个整数转换成一个十六进制表示的字符串。

    建议:所有子类都重写toString()方法。

    注意:直接输出一个对象的名称,其实就是调用该对象的toString()方法。

  (7)public boolean equals(Object obj):指示其他某个对象是否与该对象“相等”。这个方法默认情况下比较的是地址值。

      例:Student s1 = new Student();

        Student s2 = new Student();

        System.out.println(s1.equals(s2));   //false

      源码:public boolean equals(Object obj) {

          //this --- s1

          //Object --- s2

          return (this == obj);

        }

      ==:

        基本类型:比较的就是值是否相同

        引用类型:比较的就是地址是否相同

      equals:

        引用类型:默认情况下,比较的是地址值。

  (8)protected void finalize():当垃圾回收器确定不存在对该对象的更多引用时,由对象垃圾回收器调用此方法。用于垃圾回收,但是什么时候回收不确定。

  (9)protected Object clone():创建并返回对象的一个副本。

      A:重写该方法

  (10)Cloneable:此类实现了Cloneable接口,以指示Object.clone()方法可以合法地对该类实例进行按字段复制。

         这个接口是标记接口,告诉我们实现该接口的类就可以实现对象的复制了。

原文地址:https://www.cnblogs.com/buhuiflydepig/p/12373401.html