关于可变参数

关于可变参数

String... category 只判断length不可以吗?我看老师给别的同学的演示,如果什么都不传入,为什么!=null是true呢? 都不传入了,为什么不是空的呢。。

http://img1.sycdn.imooc.com//climg/60644fba099269ef19200750.jpg


step用于指定循环的步长,例如step="2",则会隔一个循环。而代码中step="1"表示每个元素都访问,step的作用相当于continue吧? 其实这里设置没意义吧。毕竟都要循环;

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

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

1回答
好帮手慕小班 2021-03-31 19:17:08

同学你好,1、这里的category数组默认不是null,如下所示

http://img1.sycdn.imooc.com//climg/606459b00977aec903500177.jpg

spacer.gifhttp://img1.sycdn.imooc.com//climg/606459ec091daeb603080166.jpg

当这个可变长参数没有传入数据是,它的长度为0,但不为null。

    ​2、是的,这里step设置为1其实可以去掉的,因为每个元素都要输出。

祝学习愉快!

  • 提问者 rock221 #1

    明明什么都没传入,为什么他的值不是null啊。。

    那我们直接

    category.length==0 || category[0]==null)

    判断==0就行了吧,不用判断后面的也可以吧、如果==0,肯定是空的啊。 

    2021-04-01 15:22:12
  • 提问者 rock221 #2

    还有,老师没有传进来参数  category[0]==nul 也是false吗? 之前不是说当可变参数没有传进来东西的时候数组也不会是null,那加了下标呢。 就会是null了吗

    2021-04-01 15:29:13
  • 好帮手慕小班 回复 提问者 rock221 #3

    同学你好,1、String... category这是一个可变长参数,与数组类似,它是一个不为null的数组

    http://img1.sycdn.imooc.com//climg/6065a67109f42e6005730528.jpg

    如上所示,这就是两个对象。

        ​2、category.length==0 || category[0]==null这是两个不同的条件,当category.length为0时,后面的category[0]==null自然不用判断,但是当category.length不为0时,category[0]==null就需要判断了。

    所以这里这两个条件也是用的|| 是短路运算符;当 || 左边是true,直接返回true,不需要执行 || 右边的代码。

        ​3、没有传入参数直接判断category.length==0成立,,后面的条件就不会执行了。

    祝学习愉快!

    2021-04-01 18:55:59
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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