A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 学习代码 中级黑马   /  2014-3-25 22:50  /  1123 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.util.*;


  2. class  TestDemo
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 show("abcdefbadc");

  7.         }
  8.         public static String show(String st)
  9.         {                char[] arr= st.toCharArray();
  10.                 Map<Character,Integer> mp = new HashMap<Character,Integer>();
  11.                
  12.                         for (int x = 0;x<arr.length ;x++ )
  13.                         {
  14.                                 Integer value = mp.get(arr[x]);
  15.                                 if(value==null)
  16.                                 {
  17.                                         mp.put(arr[x],1);
  18.                                 }
  19.                                 else
  20.                                 {        value = value+1;//这个地方写成 value = value++;为什么就不可以呢
  21.                                         mp.put(arr[x],value);
  22.                                                
  23.                                 }
  24.                         }

  25.                         System.out.println(mp);
  26.                         return null;
  27.         }


  28. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
itpower + 1

查看全部评分

7 个回复

倒序浏览
好长代码
回复 使用道具 举报
恩   谢谢  兄弟   但是我按照后面 那样写的话  出来的结果是,错误的
回复 使用道具 举报
刚刚  我弄错了   谢谢  这下这个问题 算是解决了  谢谢
回复 使用道具 举报
本帖最后由 枫儿 于 2014-3-25 23:24 编辑

    java的编译器在遇到value++value - -的时候会重新为变量运算分配一块内存空间,以存放原始的值,而在完成了赋值运算之后,将这块内存释放掉,下面首先看一下如果是int x = 0; x=value++的情况:



  value的原始值存放在后开辟的内存中,最后这个值将赋值给x,这样x=value++后,x就会得到value的值,而value又将自加,所以,在释放内存之后,原来存放xvalue的地方将得到值将是:x(此时的值等于初始value)value(value自加后的值)。  明白了上面的问题,让我们接下来看看value=value++的情况:



     所以这样最后一次循环内的结果仍旧是value

  而C语言中的value=value++就只是完成value++的内容,所以结论会不同。这种情况说明javac的处理语法的机制不同,如果在程序中只输入value++就不会出现这个方面的问题,所在以后的程序中如果使用到value=value++的时候要格外小心,一般只需要用value++就不会有问题了。


评分

参与人数 1技术分 +1 收起 理由
itpower + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马