Object类
Object类介绍
- object类是所有类的父类,每个类都会间接或直接的继承该类,该类中提供了一些常用的方法。(这就是为什么我们创建的类可以使用一些我们没有创建过的方法,如toString方法等等)
toString()方法
- 在我们使用java打印语句的时候,我们会发现一些有趣的现象
String name ="yibiao";
System.out.println(name);
创建一个字符串类对象并打印,程序的输出结果为yibiao。
Person p =new Person("yibiao",13);
System.out.println(p);
创建一个自己创建的Person类对象,打印结果为basic.Person@1b6d3586
,即包名类名+@+地址
- 为什么会出现这种现象呢,解释如下:
首先,我们在使用打印语句打印对象时,会默认调用对象的toString()方法。也就是说如下的两行代码是划等号的。
System.out.println(name);
System.out.println(name.toString());
- 那么当我们在打印自己创建的Person对象时,会默认调用该对象的toString()方法,但是我们并没有在创建该类的时候定义此方法,那为什么还是能调用此方法呢,原因即是我们在创建Person类时会自动继承Object类,也就继承了Object类的toString方法。而Object类的toString方法就是打印包名类名+@+地址。那为什么String类型打印的不是这个格式,而是字符串内容呢,这是因为String类改写了此方法。
equals()方法
普通自定义对象的equals()方法时比较两个对象的地址值,而String类型是比较字符串的内容。原因与toString()方法类似。重写前也就是Object类自带的equals()方法就是比较对象地址,而String类对其进行了改写。
注:Objects.equals(Object a,Object b)
该方法也可以比较字符串内容是否一致,并且可以处理空指针等问题,加了一些健壮性的判断。