读书人

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

发布时间: 2013-01-23 10:44:49 作者: rapoo

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


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

读书人网 >J2SE开发

热点推荐