为了表述清楚, 我把代码简化了下 大致是这样
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在其运算符内部实现中应该参与了什么运算
“三目运算符判断为真的时候, 是不会执行第二个表达式的”这个不是吧
短路求值运算符貌似只有 && 和