public class Test
{
   public static void main(String[] args)
   {
       int j = 0;
       for(int i=0;i<100;i++)
          j = j++;
           System.out.println(j);
   } 
}大家会认为是打印多少为什么,把打印的步骤写出来

解决方案 »

  1.   

    j = j++
    因为j==0,所以先把0赋值给j
    然后再j++所以不管循环多少次,j始终为0你再试试 j = ++j呢
      

  2.   

    这里有分析 http://blog.csdn.net/miderph84/article/details/3390166
      

  3.   

    打印的结果是一个0,for(int i=0;i<100;i++)与输出 System.out.println(j)没有关系。int j = 0;j= j++是先把intj = 0赋值给j,然后在进行自加运算。在这个里面循环体内部只有一个语句j = j++;虽然在for(int i=0;i<100;i++)不断的循环,但是并没有输出。
    如果想要打印结果为100个 0  ,
    public class Test
    {
      public static void main(String[] args)
      {
      int j = 0;
      for(int i=0;i<100;i++)
      {
      j = j++;
      System.out.println(j);
      }
      } 
    }
    这个循环体内部不但有for(int i=0;i<100;i++)控制j++,还有System.out.println(j);
      

  4.   

    100个0
    首先要理解什么是j++,j++就是首先将j赋值给j++(此时把j++当成一个变量)分析:j=j++
    第一步: j++ (j = 0,j++ = 0)
    第二步: 执行j++实现j自增 (j = 1,j++ = 0)
    第三步: 将j++赋值给j  (j = 0,j++ = 0)总的来说,j的变化为0-》1-》0,也就是说,j=j++毫无意义
      

  5.   

    楼上没有注意for循环在哪里结束吧。没有花括号哟。
      

  6.   

    5楼说的“j = j++
    因为j==0,所以先把0赋值给j
    然后再j++所以不管循环多少次,j始终为0你再试试 j = ++j呢”有点不对:
    j=j++ 应该是先计算j++,然后才是赋值,否则后面的解释说不通。再说,赋值的优先级低于++运算。
      

  7.   

    11楼真相,只是没有注意到for的作用范围。
      

  8.   

    一个0 
    大家看清楚
    for(int i=0;i<100;i++)
       j = j++;System.out.println(j);在for循环之外 只输出一次
      

  9.   


    public class Test
    {
      public static void main(String[] args)
      {
      int j = 0;
      for(int i=0;i<100;i++)
      j = j++;
      System.out.println(j);
      }  
    }
    /*
    Output:101*/
      

  10.   


    public class TestNum {
    public static void main(String[] args)
    {
    int j = 0;
        for(int i=0;i<100;i++)
        {
         j = j++;
        }
        System.out.println(j);
      }  
    }/*
    Output:
    0
    -------------------
    1.j=0 j++=0 赋值之后再自加
    2.j=j++=0 自加后的j重新被赋值 
    以后少些这样的代码吧
    */
      

  11.   

    public class TestNum {
    public static void main(String[] args)
    {
    int j = 0;
        for(int i=0;i<100;i++)
        {
         j = j++;
        }
        System.out.println(j);
      }  
    }
    /*
    Output:
    0
    -------------------
    1.j=0 j++=0 赋值之后再自加
    2.j=j++=0 自加后的j重新被赋值 
    以后少些这样的代码吧
    */
      

  12.   


    /*
    j=0;
    k=j++;
    j=k;
    */
      

  13.   

    对,for循环后面没有花括号,所以不会每次循环都打印出来,只会打印最终的结果:一个0。
      

  14.   

    试一下:
      j = j++ 是0;
      j = ++j;这样的话,输出100;
      

  15.   

    j = j++; // 输出0
    j = ++j; // 输出100
    我的回复呢?
      

  16.   

    是0.首先考虑for循环的范围,只有一句j = j++;而执行这一句的时候,先把j的值0赋给j,然后j++变为1,但是变为1的j并没有储存,所以j还是0.依次循环100次,j还是0.最后打印j的值,当然是1个0.就这么简单。