我发现不加if判断,不实例化,也可以正常输出,那if语句不是没有用了?

我发现不加if判断,不实例化,也可以正常输出,那if语句不是没有用了?

if(this.studentsubject==null)

this.studentsubject=new Subject();

正在回答

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

2回答

同学你好,你的理解与老师的描述有些偏差哦~

这里将Subject设置为null,将其传入Student对象中,是用来判断Student类中的studentSubject 获取专业对象是否进行了实例化,是否会报空指针异常,而不是判断Subject类中getMyStudents()方法的if语句哦~

具体测试代码如下:

http://img1.sycdn.imooc.com//climg/5d84948a099ebaef06970267.jpg

如果Student类中没有添加if语句:

http://img1.sycdn.imooc.com//climg/5d8494be09a6d1cf04710137.jpg

输出结果:空指针异常

http://img1.sycdn.imooc.com//climg/5d8494cd09c76ea405300131.jpg

如果Student类中编写if语句

http://img1.sycdn.imooc.com//climg/5d8494f0098e647c04290136.jpg

输出结果:不会出现空指针异常,只是属性输出默认值。

http://img1.sycdn.imooc.com//climg/5d8495000984e46302980194.jpg

同理Subject中的getMyStudents()方法,数组进行初始化,也是这个道理。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

好帮手慕酷酷 2019-09-20 14:31:43

同学你好,在视频中,主方法在初始化Student对象时,传入的Subject对象不为空,所以,使用学生对象获取Subject并进一步调用Subject中的方法时,不会报空指针异常。具体如下:

http://img1.sycdn.imooc.com//climg/5d84705c0991de0004950156.jpg

但是如果出现另一种情况,传入的Subject对象为空,使用学生对象获取Subject,不创建Subject对象的情况下,会直接返回null。再次调用Subject中的方法,就是null.getXxx();,会出现空指针异常。

例如如下代码,就会报出空指针异常,所以建议要进行完整的判断,避免出现异常。

http://img1.sycdn.imooc.com//climg/5d8472ef095292ca05750158.jpg

  如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 慕标0359786 #1
    但是我把subject变成null,然后在subject类中有if语句初始化,最后也是空指针异常
    2019-09-20 16:03:24
  • 提问者 慕标0359786 #2
    但是我写subject sub1=null,然后在subject类中有if语句初始化,最后也是空指针异常,所以还是没有起到初始化的效果
    2019-09-20 16:09:04
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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