阅读IDEA生成的equals方法--java进阶day05

1.IDEA生成的equals方法

虽然我们之前写了equals方法,但IDEA中可以快速生成equals方法,因此,我们要能看懂IDEA生成的equals方法

1.if(this==o)

2.if(o==null)

我们将第二个if的一大段分为两段进行分析

当代码走到第二个if了,说明stu1肯定不是null,否则就空指针异常,根本不可能走到第二个if

stu1不是null,那就只有stu2可能为null

3.第二个if后半段

第二个if使用的是||,遇真则不再执行后面的内容,当stu2真为null时,就会快速return false

如果stu2不是null,就还会继续执行后半段

后半段的getClass方法来源于Object,用于判断字节码类型

4.向下转型

当代码能走到向下转型时,说明两个对象的字节码相同,对应的类型肯定相同,因此直接转型然后进行比较即可

2.Objects

刚才IDEA生成的equals方法里,比较的时候使用的是Objects的equals方法,所以,我们还需要了解这个类


.

1.Objects.equals

了解了Objects类,我们试着调用它的equals方法

我们发现Objects类调用的equals方法和自己写的equals方法功能是一致的


.

Objects类的equals方法依赖于我们写的equals方法

当我们把自己重写的equals方法删除后,重新调用Objects的equals方法


.

即使两个对象的属性一模一样,但打印结果是false,说明比较的是地址

2.Objects.equals的好处

Objects类的equals方法内部带有非空判断,假设stu1是null,调用了equals方法肯定会引发空指针异常,导致后续的代码逻辑无法运行,但使用Objects的equals方法则不会有这些问题


.

3.Objects.equals的代码逻辑分析

1.(a==b)

2.a!=null

posted @ 2025-03-10 17:00  直実  阅读(34)  评论(0)    收藏  举报