本帖最后由 赵彦辉 于 2013-1-21 13:41 编辑
我测试的是这两句抛的空指针异常
- public static void main(String[] args)
- {
- Map<String,Integer> map = new HashMap<String,Integer>();
- String str = "x";
- // Integer i = Math.random()*10 > 7? 5 : null;
- // System.out.println(i);
- map.put(str, 5);
- map.put(str,null);
- map.put(str,5 + map.get(str));
- map.put(str, 1 + map.get(str));
- // map.put(str, map.get(str)==null ? i : (map.get(str) + (i==null? 1 : i)));
- /*
- map.get(str)==null i = 5
- map.get(str) !=null 5 + map.get(str)
-
- map.get(str)==null i = null
- map.get(str) !=null 1 + map.get(str)
- */
- Set<String> keySet = map.keySet();
- for(Iterator<String> it = keySet.iterator();it.hasNext();)
- {
- String str1 = it.next();
- System.out.println(str1);
- System.out.println(map.get(str));
- }
- }
复制代码 map.put(str,5 + map.get(str));
map.put(str, 1 + map.get(str));
请看这两句代码:map.get(str) != null, 那么键所对应的值就为 5 + map.get(str)或者 1 + map.get(str)
我测试的时候就只有这两句抛空指针异常,这个时候具体的键对应的值往Map集合中存放的时候会出错,注释掉这两句程序就OK,
不知道我的答案是不是正解,大家讨论
|