不理解啊

不理解啊

https://img1.sycdn.imooc.com//climg/614da206094443ae25601600.jpg

问题描述:

if(this==obj)为啥就要返回true

问题描述:

obj.getclass==cat.class为啥后面就要跟着三个属性的相等判断,


问题描述:

并且最下面为啥还要返回一个false



正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小蓝 2021-09-24 18:33:13

同学你好,对于你的问题,老师分别做回答:

1.if(this==obj)返回true的原因是:如果用来对比的对象是同一个,那么他们一定是一样的。举个例子:现在已知世界上只有一个“张三”,此时我们要对比“张三”和“张三”是不是同一个人,显然他们是同一个人,那么就不需要继续对比其他因素了。

2.obj.getclass==cat.class之后对比属性:当代码执行到这里的时候,我们可以确定拿来对比的两个对象不是同一个对象了。此时我们先对比两个对象的实际类型是否一样。举个例子:用来对比的两个对象一个是人,一个是狗,显然此时就不需要继续对比了,肯定是不一样的。但是如果两个对象都是人呢?并不是所有人都是同一个人,所以我们需要继续对比一些细节,比如姓名是不是一样,身份证号是不是一样等等。在我们的代码中就是依次对比所有属性的值是否相同。

3.最后返回false的原因:在代码中出现了两个if语句,这两个if是有可能在判断条件的时候都是false,那么代码块中的return语句都没有得到执行,对于这个方法来讲就没有一个返回值,不符合语法要求。举个例子:我们用“张三”和“李四”做对比,第一个if语句判断结果为false,因为不是同一个人。继续判断下一个if语句,此时我们发现,“张三”是个人,而“李四”是只猫的名字,显然此时的if语句判断结果也为false,此时代码继续向下运行,没有一个可以return的值了。

祝学习愉快~


  • 提问者 Star3327752 #1
    1. 为什么return了false就会向下继续允许而true不会

    2. 所以第一个if判断的是不是同一个类,第二个是判断同一个类下是不是同一个对象?

    2021-09-24 19:03:33
  • 好帮手慕阿园 回复 提问者 Star3327752 #2

    同学你好

    1、如果if判断结果为true,会进入if语句,用return关键字结束了该方法,后续代码则不会继续执行;而如果if的结果是false,不会进入if语句,会继续向下执行

    2、第一个判断的是是否是同一个对象,如果是同一个对象就不用继续比较了,说明相等,则返回true;如果不是同一个对象,继续执行;第二个if可以这么理解,obj.getClass()==Cat.class的含义是判断obj是否是Cat类的实例,所以这里判断参数是否是cat类的实例

    祝学习愉快~

    2021-09-25 10:13:12
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师