public class Test {

    public static void main(String[] args) {
        
     int f=0;
        for (int i = 0;i<10;i++) {
            f = f++;
            
        }
        
        System.out.println(f);
            }
}

解决方案 »

  1.   

    for(int i=0;i<10;i++){
      f++;
    }
      

  2.   

    public   class   Test   {         public   static   void   main(String[]   args)   { 
                    
            int   f=1; 
                    for   (int   i   =   0;i <10;i++)   { 
                            f   =   f++; 
                            
                    } 
                    
                    System.out.println(f); 
                            } 
    }
    输出也是1哦
      

  3.   

    这是JAVA机制的问题i++的意思就是i自加1,并且是在运算后自加(区别于++i)
    但是JAVA里并不是你所想像的顺序:运算,运算后用i+1代替i
    他实际的顺序是这样的:开辟一个内存地址,将i的值放进去,原来i的地址的值+1,用新开辟的地址里i的值进行运算,运算后释放掉开辟的地址.
    如果你用j=f++,n=f++就都没有问题,但唯独你用f=f++时才会出现这种问题
      

  4.   

    我晕.没说清楚.哪位高手说个清楚啊.还有一题
    class IncDec{
        public static void main ( String [ ] args ) {
      int a=0,d=0;
      d = a++;
           System.out.println ( "a = " + a );
           System.out.println ( "d = " + d );
    }
    }
      

  5.   

    首先右f会赋值给左f,然后右f自增,不影响此时的左f。
    我猜想:运行时内存中会有两处f也就是一个左f和一个右f,右f是计算过程中临时存在的,计算结束即丢弃。
    而左f会一直存在直至生命结束。
    也就是说最终取计算结果而不是取计算过程。
    public   class   test4   {       public   static   void   main(String[]   args)   { 
                    
             int   f=1; 
             f   =   f++; 
                            
                                  
             System.out.println(f); 
                          } 
    }
    没有循环的话,我想没人会选错答案。
     
    猜想猜想  等达人给解释
      

  6.   

    oliveyuganfei 
    龙欣 
    等 级:
     发表于:2007-11-08 16:16:227楼 得分:0 
    我晕.没说清楚.哪位高手说个清楚啊.还有一题 
    class   IncDec{ 
            public   static   void   main   (   String   [   ]   args   )   { 
        int   a=0,d=0; 
        d   =   a++; 
                  System.out.println   (   "a   =   "   +   a   ); 
                  System.out.println   (   "d   =   "   +   d   ); 


     
    --------------------------------
    这个怎么了?没问题啊!!!
      

  7.   

    package other;public       class       Test       {       public       static       void       main(String[]       args)       {   
                            
              int       f=1;   
              f       =       f++;   
                                            
                                                        
              System.out.println(f);   
                                }   

    f=1,二个F就会这样.要是换成别的变量就不会.不知道昨回事,
      

  8.   

    JhunHoonXZ 
    霸全勋章 
    等 级:
     发表于:2007-11-08 16:03:006楼 得分:0 
    这是JAVA机制的问题 i++的意思就是i自加1,并且是在运算后自加(区别于++i) 
    但是JAVA里并不是你所想像的顺序:运算,运算后用i+1代替i 
    他实际的顺序是这样的:开辟一个内存地址,将i的值放进去,原来i的地址的值+1,用新开辟的地址里i的值进行运算,运算后释放掉开辟的地址. 
    如果你用j=f++,n=f++就都没有问题,但唯独你用f=f++时才会出现这种问题 
     
    -------------------------------
    在6楼,LOOK~~int j,f=0;
    j=f++;
    我们假设f的地址为0001,j的地址为1111
    首先,开辟新内存地址0002,存放0(f的值)
    然后f++(用的是0001地址),0001的值为1,0002的值为0
    然后把0002的值给1111,释放0002,最后得到,f=1,j=0现在换成f=f++
    同样,假设f的地址为0001
    首先,开辟新内存地址0002,存放0
    然后f++(用0001地址),0001的值为1,0002的值为0
    然后这里,关键的部分,把0002的值给0001,然后释放0002,最后得到f=0
      

  9.   

    这样说吧:
    f=f++;等价于:f=(f++);(因为=的优先级低)
    f++这个表达式的值是f原来没加之前的值,把这个值赋给f,所以f没有变。
    不知道这么说对不对,能不能说明白
      

  10.   

       在类的里面main函数的外面写个递增的方法就行了撒
      

  11.   

    我是java初学者看见这。。我都快晕了。别高那么复杂行不还仍我郁闷。。位啥会扔