java: 奇怪的 NullPointerException in ternary operator (? : )
2022-09-02 21:04:00
请考虑以下代码片段:
private static void doSomething(Double avg, Double min, Double sd) {
final Double testMin;
if (avg != null) {
testMin = Math.max(min, avg - 3 * sd);
} else {
testMin = min;
}
System.out.println("testMin=" + testMin);
final Double verwachtMin = avg != null ? Math.max(min, avg - 3 * sd) : min;
System.out.println("verwachtMin=" + verwachtMin);
}
据我所知(以及我的IDE可以告诉我的),变量和应该是等效的。testMin
verwachtMin
正如你所料,我宁愿写最后2行而不是前7行。但是,当我向此方法传递 3 个空值时,我在变量的计算上会得到一个 NPE。verwachtMin
有谁知道这是怎么发生的?三元算子是否评估第二部分,即使条件不是?true
(Java 版本 1.6.0_21)