当前位置: 代码迷 >> J2SE >> 求教好手, 为何会出现空指针
  详细解决方案

求教好手, 为何会出现空指针

热度:1682   发布时间:2013-02-25 21:54:18.0
求教高手, 为何会出现空指针
为了表述清楚, 我把代码简化了下  大致是这样


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在其运算符内部实现中应该参与了什么运算

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