public class Person
{
   
    public  static void  main(String[] args)
   {
      int i=0;
     i=i++;
     System.out.println("i="+i);
    }
    
}
  输出i=0     

解决方案 »

  1.   

    当i被使用过后再加1
    System.out.println("i="+i);
    这一句才是使用了i,这句执行后再加1
      

  2.   

    1楼解释的有点问题,问题还是在 i=i++; 上。主要问题是 i++ 表达式被运算时是先取得 i 的值,然后再运行++ 运算。编译后执行的顺序是:
    1、计算表达式(i++)的值,其实也就是:i,那么算出来就是 0 
    2、执行:i++运算
    3、因为右边表达式没内容了,所以右边最终的取值就是 0
    3、执行赋值 i = 等号右边的值,那么也就是 0 了
    楼主如果没搞懂的话,请把:
    i=i++;
    修改为:
    i=i++  +  i++;
    结果是“1”,再想想应该就能理解了。
      

  3.   

    楼上的意思 是   = 用了2次?   
    开始  i=i   =>   i=0   =>   运行++   i=1了   ==》   然后又运行了一次=     i=(0++)     
    所以i=0吗?
      

  4.   

    楼上的意思 是   = 用了2次?   
    开始  i=i   =>   i=0   =>   运行++   i=1了   ==》   然后又运行了一次=     i=(0++)     
    所以i=0吗?
      

  5.   

    等号就用了一次,但表达式取值的时候是先取值再++,解释下后面这个你理解看看:i=i++ + i++;
    执行顺序:
    1、计算表达式第一个(i++)的值,那么是 0
    2、执行 i++ 运算,那么 i 是 1;此时表达式变成了: i = 0 + i++ 
    3、计算表达式第二个(i++)的值,那么是 1
    4、执行 i++ 运算,那么 i 是 2;此时表达式变成了: i = 0 + 1
    5、右边表达式计算完毕了,最终取值是 1
    6、执行赋值 i = 等号右边的值,那么也就是 1 了看看能理解么?
      

  6.   

    i=i++ 
    ++在i后 先把0付给i之后i再加1
    i=0 i++=1 
      

  7.   

    LZ试试这个?
    public class Test
    {
    public static void main(String[] args) {
    int i = 0;
    i = i++;
    System.out.println("i = " + i);
    System.out.println("i = " + i);

    int a = i++;

    System.out.println("i = " + i);
    System.out.println("i = " + i);

    i = i + 1;

    System.out.println("i = " + i);
    System.out.println("i = " + i);
    }
    }
      

  8.   

    像2楼所说,i = i++;这句在编译器中生成的中间代码应该是类似这样的:
    temp = i;     //这时i为0
    i += 1;
    i = temp;
    像这样的语句在C/C++中是未定义的行为,lz可以搜一下关于序列点的知识看一下,当然了,Java中是没有序列点这个概念的~
      

  9.   

    i=i++  
    右边的i先对左边的i进行赋值运算,运算后再对表达式(右边)中的i进行自加运算!!
    输出的是被赋值(左边)的i的那个结果,所以输出的结果为1.
      

  10.   

    楼主问的问题和上次看到的一个帖子问题很相似,比较难想通
    当时他问的问题是:
    int a = 5;
    a = a--;
    System.out.println(a);
    为什么还是输出的还是5;
    这里让人难想通的地方就是a = a--;中的a了!
    我想你可以参考9楼的说法,在结合下面这几个例子去体会一下。也许你会有收获:
    int a = 5;
    a = a--;
    System.out.println(a--);
    System.out.println(a--+a);
    System.out.println(++a);
      

  11.   

    http://topic.csdn.net/u/20120301/13/29fe0343-23cb-438a-8529-7410a46e71aa.html这个和lz问的问题是一个、当时也解答了、、lz可以进去看看我的回答~~ 应该是能理解的!