日期:2014-05-20  浏览次数:20744 次

关于Integer类和Map的疑问

HashMap<Integer, Integer> hm = new HashMap<Integer, Integer>();
Integer r = new Integer((int)(Math.random() * 20));
if( hm.containsKey(r) ){
//hm.get(r) ++;编译器报错
Integer kk = hm.get(r);
kk ++;//能通过编译
}


通过hm.get(r)取出来的应该是一个Integer类,直接在hm.get(r)的基础上++,编译器报错,但是如果重新赋值给kk后,再把kk ++,就能通过编译,这是为啥呢?

------解决方案--------------------
hm.get(r)++这个意思是:

hm.get(r)=hm.get(r)+1;
你认为上面成立吗?
------解决方案--------------------
一个为声明的变量可以直接进行++操作?
hm.get(r)只是一个值,连声明都没有,如何编译通过?