一、Object类概述

Object类是所有Java类的根父类。如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object

二、Object类的属性和方法

作为所有类的祖先,自然Object类里面的方法自然有很多通用性。所以需要单独讲一下。

2.1构造器

Object类只有一个空参构造器。

2.2常用方法  查字典  https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/Object.html

finalize() 方法   (C++的析构函数)

     在对象没用的时候(没有变量指向该对象了),由垃圾回收机制自动调用finalize()方法,来回收对象的内存。如果不够牛批,就不要调用这个方法,交给垃圾回收器。只需要将指向该对象的变量=null,即可。

getClass()方法

    返回对象的类,就是让我们知道这个对象到底是哪个类的实例。和反射相关。

equals()方法  

    比较两个对象指向的地址是否相等。

语法:boolean equals(Object obj)
源码为:  public boolean equals(Object obj){
   return (this==obj); }

复习: == 运算符

要点:如果运算符两边基本数据类型不一致,会自动变量提升以后,再比较值是否相等。

           如果运算符两边是引用数据类型,则是比较两边的地址是否一致。

特别说明:equals方法在String、Date、File、包装类里面都重写了,他们都是比较内容而非比较地址。

       实际开发中,我们当然是需要比内容的equals方法,自己写,太难了。所以IDEA中,source目录下,有自动生成equals的组件。我们只用选择,对比哪些属性就可以了。然后代码自动生成。

2.3 toString() 方法  (C++可以重载=运算符来实现想打印的东西)

返回对象的地址值,String类型

说明:打印一个对象的值。其实默认就是隐式打印 对象.toString() 。 如果打印的对象,不是对象的地址,比如打印的是String对象,或者Date对象,System.out.println("ABC"); 说明他们的的toString()方法被重写了。

特别说明:equals方法在String、Date、File、包装类里面都重写了,他们都是返回实体内容信息,不会返回地址。

       实际开发中,我们自然也不想打印一个地址值,因此需要重写toString()方法,然而自己写,太难了。所以IDEA中,source目录下,有自动生成toString()的组件。我们只用选择打印哪些属性和方法。然后代码自动生成。