【发布时间】:2011-03-09 13:55:29
【问题描述】:
请考虑这个代码sn-p:
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 个空值传递给此方法时,我在计算 verwachtMin 变量时得到 NPE。
有人知道这是怎么回事吗?三元运算符是否评估第二部分,即使条件不是true?
(Java 版本 1.6.0_21)
【问题讨论】:
标签: java nullpointerexception ternary-operator