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

`return <boolean exp> || 怎么样?<Object exp>`

`return <boolean exp> || 怎么样?<Object exp>`

一只萌萌小番薯 2021-12-10 16:55:51
我正在看书,看到了这段代码:public Animal getWinner(List<Animal> animals) {    return animals == null || animals.size() == 0 ? null : animals.get(0);}后一个表达式很好,因为它返回一个 Animal 或 null。不过,前一个表达式令人费解,因为它只是一个布尔表达式。我做了一个测试类并调用了getWinner(null). 它回来了null。据我所知,animals == null这是真的,表达式会短路,我希望该方法返回true而不是null.该行如何编译,甚至按预期工作?
查看完整描述

1 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

这与Java 中的运算符优先级以及哪个运算符(布尔值或三元)将首先执行有关。

三元具有较低的优先级,因此or将首先评估,这意味着它看起来像这样带括号:

return (animals == null || animals.size() == 0) ? null : animals.get(0);

所以整行的结果要么是 toreturn null要么return animals.get(0)


查看完整回答
反对 回复 2021-12-10
  • 1 回答
  • 0 关注
  • 192 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号