同时问一下,
int i=0;
i=i++;
System.out.print(i);//输出是0,为什么?
i=i++;
System.out.print(i);//输出还是0,为什么?

解决方案 »

  1.   

    第一个问题: 最详细最通俗的解释请看Thinking in Java
    第二个问题: i++ 是先赋值后加, 你第一个i++的时候程序先把i的前一个值 0 赋给i所以为0,后一个i++同样,因为你前一个为i赋值为0,这次一样.
      

  2.   

    i++是先使用,再加一。“先使用”要看环境,在这里就是附值操作了。i永远为0;
    i=i++;的意思是i=i;i+1;
    i++的意思是i=i+1;
    两者不同的。
      

  3.   

    i=i++;的意思是i=i;i+1;
    i++的意思是i=i+1;
    =====================
    对的!
      

  4.   

    楼上的朋友,i=i++;//i=i;i+1这个i+1是什么意思?单独一个i+1根本就不是一个完整的语句呀。
      

  5.   

    至于类的初始化过程你可以看看thinking in java的第四章P135-------------------------------------
    x=x++;
    如果x=5,我们看以下步骤运算步骤:            寄存器   内存
    初始状态:           0     5
    读入x                  5   <----- 5
    x=x;                   5  ------> 5
    x++;(此x为寄存器值)    6          5
    运算结束,寄存器清零   0          5可以看出,此操作没有效果.-----------------------------
    x=++x;
    如果x=5,我们看以下步骤运算步骤:            寄存器   内存
    初始状态:           0     5
    读入x                  5   <----- 5
    x++;(此x为寄存器值)    6          5
    x=x;                   6  ------> 6
    运算结束,寄存器清零   0          6