日期:2014-05-20  浏览次数:20733 次

求教高手, 为何会出现空指针
为了表述清楚, 我把代码简化了下  大致是这样


Map<String, Integer> map = new HashMap<String, Integer>();
String str = "GGG";
Integer i = Math.random()*10 > 7? 5 : null;
System.out.println(i);

map.put(str, map.get(str)==null ? i : (map.get(str) + (i==null? 1 : i)));

当i 随机到null时候, 最后一行会抛出空指针
最后一行put的时候为何会出现空指针异常? 按理说三目运算符判断为真的时候, 是不会执行第二个表达式的
请教各位高手
java null hashmap

------解决方案--------------------
“三目运算符判断为真的时候, 是不会执行第二个表达式的”这个不是吧
短路求值运算符貌似只有 && 和 
------解决方案--------------------

if(map.get(str)==null)
map.put(str, i);
else if(i==null)
map.put(str, map.get(str)+1);
else
map.put(str, i);

我改成这样就没报错。

------解决方案--------------------
Integer i = null;
Integer x = true ? i : 1;

和为null的Integer有关,i在其运算符内部实现中应该参与了什么运算