map.get()方法返回的是一个对象的指针,value也指向那个对象,如果将该指针指向了另外一个对象,对map中的value是没有作用的。而Integer对象的i++会重新生成一个对象并将i指向它。就比如以下代码,我们想根据key找到value,将其加一。
Integer value=map.get(str.charAt(i));
if(value==null)
map.put(str.charAt(i),1);
else
//直接写value++;是不能通过的,map.gat()得到的是一个复制的指针
map.put(str.charAt(i),value+1);