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)只是一个值,连声明都没有,如何编译通过?
|