为什么这里可以这样写?底层原理是什么,没能理解。。。。

为什么这里可以这样写?底层原理是什么,没能理解。。。。

http://img1.sycdn.imooc.com//climg/60f701bc097d975114121228.jpg
​FileInputStream fis=new FileInputStream("imooc.txt");
//这里竟然可以直接把赋值语句当作值来处理了,是因为赋值语句中存在return?
While((n=fis.read())!=-1){
System.out.print((char)n);
}

正在回答

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

1回答

同学你好,“((n=fis.read()) != -1)”此代码先执行n=fis.read(),将fis.read()的返回值赋值给n后,再将n的值与-1进行比较,即判断的是 n!=-1,所以可以书写为n=fis.read()) != -1。

祝学习愉快~

  • 宝慕林5570576 提问者 #1

    原来是这样!明白了,谢谢!

    2021-07-21 11:34:37
  • 宝慕林5570576 提问者 #2

    我可以理解为(n=fis.read())会返回n本身吗?仔细想想只能是这个样子,不然它一个赋值语句怎么能做为变量比较的?

    2021-07-21 11:40:24
  • 好帮手慕小小 回复 提问者 宝慕林5570576 #3

    同学你好,n=fis.read()是赋值语句,但不是用赋值语句与-1比较,而是用其执行后的结果,也就是n的值与-1比较。可以将n=fis.read()可以理解为:先执行fis.read(),再用变量n存储其返回值,最后n和-1进行比较。

    建议同学按照代码执行的顺序来分析代码哦。

    祝学习愉快~


    2021-07-21 15:03:46
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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