public class MyMain{
    static int i;
    public static void main(String argv[]){
    i = 2;
    i =i++;
    System.out.println(i);//这里居然输出2。怎么就不是3呢在=号那还是2啊,但是后来又加了1嘛

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【kim_lc】截止到2008-07-24 16:03:08的历史汇总数据(不包括此帖):
    发帖的总数量:3                        发帖的总分数:50                       每贴平均分数:16                       
    回帖的总数量:3                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:3                        结贴的总分数:50                       
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    敬礼!
      

  2.   

    i++:先赋值,最后给i加一
    ++i:先加,然后赋值。如果搞不懂,直接写i=i+1就好。真的,其实效率没差别的
      

  3.   

     i =i++;  这个应该直接写成 i++就可以了,不需要i = i++i = i++ 在不同的语言、不同的编译器中有不同的解释,Java的计算是1、先将i的值保存起来;2、运行i++;3、再将刚刚保存的值重新赋给i;这样i就还是原来的2了
      

  4.   

    i=i++是把i原来的值又赋给i了,实际上i++以后已经是3了,你相当于还原了i++的操作
      

  5.   

    ++i和I++是有区别的
    前者是先加后使用,而后者是先使用后增加,这里如果你想输入出3可以把I=i++改成i++
      

  6.   

    可是在你说的第二步运行i++之后,i就变成3了对吧,然后再print的耶,那print的时候为什么出来的还是2呢
      

  7.   

    其实i=i++可以拆成这样
    int s = i++;
    //这时i已经是3了
    i = s;
    //i被重新赋值
      

  8.   

    3楼的ChDw解释很到位,可以用这个验证一下public class Test {
      static int i;
        public static void main(String argv[]){
         System.out.println(i);
        i = 2;
        System.out.println(i);
        int j=0;
        j =i++;
        System.out.println(i+","+j);
    }
      

  9.   

    i = i++;//先把i++的值(2)赋给i,再++,就不再赋值了
    把 i = 去了,直接 i++ ,print值就变了
      

  10.   

    把 i = 去了,直接 i++ ,print值就变了,要不就直接i=i+1吧。除了应付考试真的没有什么用。
      

  11.   

    我仔细解释一下:
    i++是先用后加
    ++i是先加后用
    i=i++的意思是:把后面i的值付给前面的i之后
    因此:结果还是2
        public static void main(final String[] args) {
         int i=2;
         i=(i++);
         System.out.println(i);
            
        }
    这个程序的结果也是2