美文网首页
20 Object类

20 Object类

作者: ca8519be679b | 来源:发表于2020-03-01 12:36 被阅读0次

object类是java的基类,位与java.lang里,所以不用导包,我们可以在文档里查看到其方法

1

toString方法

此方法为Object类默认的转换字符串的方法,我们可以复写,但是一般都将其返回字符串

2

我们定义个Person类,像以前一样定义私有属性,然后设置getter,setter,constructor,因为其默认继承自Object类,那我们就可以调用toString方法

3

我们打印toString的字符串,发现其是和我们的直接打印对象效果一样,所以打印对象的时候默认调用的就是toString方法

4 5

我们重写了toString方法,可以发现返回的字符串如我们所设想的一样,此时因为修改了方法,打印对象也是一样结果

有很多类都已经重写了toString方法,如下

6

我们使用过ArrayList类,有空可以熟悉下,我们可以发现这些的默认方法都已经被复写,因为地址显示对齐意义不大


equals方法

注意拼写有s,比较2个对象是否相等,返回布尔值

7

我们进行实例化,可以看到虽然b,c属性一样,但是返回也是false,这是为什么呢,因为equals是==比较,所以引用类型比较的是地址值,所以不等

8

我们可以重写equals方法,这里我们设置名字年龄一样就是相等,这里因为需要复写,传进来的是Object类型,我们需要强制转换,而且其属性要通过方法getter获得

9

此时再运行就是b,c相等

10

当然我们强制转换可能出现问题,如果比较的不是Person类强转就会报错,这样我们就需要instanceof进行if判断,否则就返回false

IntelliJ的快捷键添加方法

之前我们是手敲的,其实我们可以使用ide自动添加equals方法,当然还是alt+insert,

11 12

我们在弹出框中一直点next就可以生成equals方法和hashCode方法,equals为了提升效率,先判断是否为自身,然后对于null或者非本类返回false,然后强转判断,这里判断对象为空有意义,因为空对象时指针不指向实例,无法调用方法

当然为了防止,调用时,调用方法对象为null,可以使用Object.equals(o1,o2)

13

相关文章

网友评论

      本文标题:20 Object类

      本文链接:https://www.haomeiwen.com/subject/iugtkhtx.html