Object类
所有的类均直接或间接的继承自Object类
当定义一个类的时候,如果没有显式的使用extends关键字来声明继承某个类,则该类默认继承Object,所以Object类中方法,被所有的类继承过来了。
Object类可以看成是java中的“上帝类”或“祖宗类”。如果一个类显式的继承某个类,则该类不再直接继承Object类(Java的单继承,亲爹只能有一个)。但一定是间接继承Object类。
public class Person {
}
与
public class Person extends Object{
}
是等价的。
1、 equals()方法
该方法的返回值为boolean值。默认情况下当调用该方法的对象和参数传入的对象是同一对象时返回true,否则返回false。
一般情况,根据实际的业务需求对该方法进行覆写,来定义自己的“相等”逻辑。
提示:当如果需要把对象存入set集合中,需要覆写该方法(后续重点讲解)
“==”和“equals”的区别:
== 比较的是两个对象是否为同一个对象(比较的内存地址是否相等)
equals默认也是比较的两个对象是否为同一对象。(从Objcet继承过来的)
一般通过覆写equals方法来定义两个对象逻辑上是否相等。
2、 hashCode()方法
该方法是一种native方法,即方法的实际实现是用c或c++写的。
该方法的返回值为十进制的int值,可以理解为调用该方法的对象在堆内存中的地址值(唯一)。该方法一般在子类中进行覆写。
3、 getClass()方法
该方法是一种native方法,即方法的实际实现是用c或c++写的。
该方法的返回值是调用该方法的对象所属类的类型。此方法无法在子类中被覆写。
此方法到反射的时候再讲解
4、 toString()方法
该方法的返回值是String类型,描述当前对象的有关信息。默认是返回:调用该方法的对象所属类的类名+@+十六进制的hashCode值。
该方法在子类中一般需要覆写,具体覆写样式根据业务需求来定。
Java SDK提供的一些系统类均对此方法进行了覆写:例如String、Date等(后续重点讲解)