object类是所有类的父类,储存在java.lang包中.在类没有明确父类的时候,会默认继承object类.
首先,为什么会出现object类呢?
首先,可以同意一些常用的方法名,比如toString,wait等方法,使不同对象可以同意,互转.
其次,对父类的逻辑处理统一,不需要根据有没有父类进行讨论.
那么在Java中,是如何保证在一个类没有父类的时候默认继承object类呢?
最常见的有两种,一种在编译的时间默认继承,何有就是由虚拟机添加,
Java用的就是在编译的时候添加object类,
object类中有许多方法.
首先是toString方法,
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
这是toString方法的原码,toString方法返回对象的包名,类名和哈希值.那么哈希值是什么呢?
哈希值是一种经过哈希算法得出的特定值,用来记录对象的地址.但与真正物理意义上的地址不同,哈希值只是逻辑上的地址.比如在c语言上每个变量的地址是固定的,但在Java中,哈希值可以被更改,使其相同,因为哈希值是jvm通过算法构造的地址.
那么为什么要使用哈希值来记录地址呢?
哈希值的作用之一,就是用来查重.
由于不同的对象有不同的哈希值,可以用来检测两对象是否相同.也有气矿会出现哈希冲突,这里就不细讲了.