Java笔记--Object类
Object类是所有对象的父类,也称基类,超类。
一、toString( );方法
作用:返回该对象的字符串表示。

我们新建一个A类,然后创建A类的对象a,然后分别打印a和a.toString( ),发现打印结果是相同的,因为打印对象名时,会默认调用该对象的toString方法。
我们进入toString的源码看一看:

其中getClass( ).getName( ):类名称,全类名(包名+类名)。
"@":分隔符。
Integer.toHexString( ):将传入的参数转换为十六进制,以字符串形式表示。
hashCode( ):返回的是对象地址+哈希算法,算出来的整数(哈希值)。
如果我们想要看到对象的属性信息,只需要在JavaBean中重写toString方法。
二、equals( );方法
指示其他某个对象是否与此对象“相等”。
Object类中的equals方法默认比较对象的内存地址。
那既然比交的是对象的地址我们还不如用“==”。
所以如果我们不满意equals方法的内容,我们可以重写equals方法。
我们来看一看IDEA为我们生成的equals重写方法:

this:谁调用谁就是this,传入的参数就是o;
this == o;是让两个对象的地址作比较,如果对象的地址相同直接返回true;
如果地址不相同继续往下走:
如果o = null,直接返回false,代码如果走到这里,this一定不等于null,因为如果this等于null会空指针异常,既然this不是null,o是null,一定不相等。
this.Class != o.getClass;是比较两个的字节码文件是否相同,如果字节码文件相同,这两个对象就是同一个类型。
Objects:
Objects类继承于Object类,从jdk1.7开始的。
Objects所使用的equals依赖于我们自己所重写的equals方法。
Objects的好处:内部带有一个非空判断。
假设stu1为null的情况下

我们去调用这个equals方法

一定会引发空指针异常
如果我们使用Objects去调用equals这个方法

虽然我们的stu1是null,但是并没有引发异常,程序还可以继续往下走。


