为了账号安全,请及时绑定邮箱和手机立即绑定

关于改写equals()方法的问题

http://img1.sycdn.imooc.com//5e73329400011ff110760978.jpg

第一个问题,55行为什么一定要return false,不可以比较两个空的对象呢?

第二个问题,62行,为什么还要分类this对象的name是不是空呢?直接像69行比较不就行了嘛?感觉有点多此一举呢?

正在回答

4 回答

第一个问题:空对象不能调用equals()方法;会抛出空指针异常;           第二个问题:值为null的引用类型变量不能调用非静态方法,会抛出空指针异常;           第三个问题:return后直接会结束函数,同时返回一个返回值;你前面不管怎么执行,最后都会得到一个return语句,所以最后的return语句就多余了;        第四个问题:是执行重写之前的方法。


2 回复 有任何疑惑可以回复我~
#1

奶尤糯米团子 提问者

好的谢谢
2020-04-18 回复 有任何疑惑可以回复我~
#2

奶尤糯米团子 提问者

哦对,有一个小疑问。关于第一个问题,那个obj不是调用equals方法的对象,是被比较的那个对象,被比较的对象是空对象也会抛出异常吗?
2020-04-18 回复 有任何疑惑可以回复我~
#3

一个大憨憨 回复 奶尤糯米团子 提问者

被比较的对象是空对象不会抛出异常;之所以判断obj==null 是因为obj如果是空对象,而this不是空对象,那它们肯定不相等
2020-04-18 回复 有任何疑惑可以回复我~
#4

奶尤糯米团子 提问者 回复 一个大憨憨

哦哦!这个样子,谢谢
2020-04-28 回复 有任何疑惑可以回复我~
#5

qq_慕丝4346553 回复 一个大憨憨

第一次不是判断obj==null吗?为什么下面还会要判断两个都为null,obj为null不是false
2021-09-04 回复 有任何疑惑可以回复我~
查看2条回复

第六十九行调用的是name的equals方法

0 回复 有任何疑惑可以回复我~

还有两个问题,系统是怎么辨别是否用加上最后一行(75)的return true的呢?这里为什么就报错了;

当重写的equals()方法里调用了equals()方法(如第69行),是默认执行重写前的方法吗?

0 回复 有任何疑惑可以回复我~

这两个都是一个类型的问题,可以了解一下“空指针异常”

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第三季
  • 参与学习       409787    人
  • 解答问题       4340    个

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

进入课程

关于改写equals()方法的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信