if (getNo() != null ? !compareNo(getNo(), b.getNo()) : getNo() != null) {
return 100;
}
假设getNo()
不是null
,这是否意味着如果return 100
评估为!compareNo(getNo(), b.getNo())
,true
会运行?
最后一个表达式(在:)之后会发生什么
答案 0 :(得分:1)
if (getNo() != null ? !compareNo(getNo(), b.getNo()) : getNo() != null)
{
return 100;
}
与
相同Boolean mainCondition = getNo() != null ? !compareNo(getNo(), b.getNo()) : getNo() != null;
if (mainCondition)
{
return 100;
}
与
相同Boolean mainCondition;
if (getNo() != null) {
mainCondition = !compareNo(getNo(), b.getNo());
} else {
mainCondition = getNo() != null;
}
if (mainCondition)
{
return 100;
}
但如果getNo()
为null
,那么我们会发现自己处于else
条件,这会将mainCondition
设置为false
,因此我们不会{ {1}},即更简单的方法是:
return
或
if (getNo() != null) {
if (!compareNo(getNo(), b.getNo()))
{
return 100;
}
}
答案是肯定的:如果if (getNo() != null && !compareNo(getNo(), b.getNo())) {
return 100;
}
为真,那么原始陈述将返回!compareNo(getNo(), b.getNo())
。
至于100
之后的部分会发生什么情况,除非:
为空,否则不会对其进行评估,但如果getNo()
确实是getNo()
,那么我们已经知道结果,所以把它包含在那里是多余的。