int i=6;
i=i++;
System.out.println(i);为什么输出的结果是:6
谁能给我解释分析一下内存是怎么执行的?这里先谢过了!

解决方案 »

  1.   

    i++这个表达式返回的是i本身,所以 i=i++; 不管进行多少次都不会有变化。
    改成直接用i++;或者i=++i;就会有变化了。
      

  2.   

    ++在前先执行++,后使用 
    如:int i = 6;
        System.out.println(++i); 输出结果为:7
    ++在后,先使用,在执行++
        int i = 6;
        System.out.println(++i); 输出结果为:6
        int j = i;
        System.out.println(j); 输出结果为:7
    --也和++一样
      

  3.   

    我们这样看:
    int i=6;   
    int j=i++;  (1)
    i=j;        (2)(1)中  先把i的值赋给j   之后i的值+1  即i=7   
    (2)把j的值赋给i   这时i的值又变成了6清楚了吧?
      

  4.   

       在栈空间里,装入一个栈针,里面放的 I  I++时,先把I为6,放在栈针中的另一个临时空间里,然后I自己变为7,把那个临时空间里的6付值给I,然后栈针弹出,把I打印出来  6
      

  5.   

    i=i++这个语句本身就是没有意义的,因为i初值为6执行完i++后,i++这个表达式的值仍为6,i的值变为7;然后又将i++这个表达式的值也就是6赋给了i,所以i的值又变成了6!不知道这样讲楼主明白了没
      

  6.   

    c语言和java的区别之一,一般不要这么写。JVM里面有一个中间临时变量。
      

  7.   

    i=i++ 是先给i赋值,然后在加1;
    i=++i 是先给i加1,然后在赋值。
      

  8.   

    有另外一个帖子和你问题差不多例子如下
    public class Test {     public static void main(String[] args) { 
                 int i=2; 
                 i=i++; //这里要注意是把i++这个表达式的值赋给i,而i++的这个表达式的值是2,i是3,把表达式的值又
                  //赋给 i,那么i又变回2了
                 int j=i++; //这里不用解释了吧,J=3
                 System.out.println(i+":"+j); 
        } 

    //i=i++;并不i++相同,如下代码
    //public class Test {
    //    public static void main(String[] args){
    //         int sum=0;
    //        for(int i=0;i<100;i++){
    //            sum=sum++;
    //        }
    //        System.out.println(sum);
    //    }
    //}
    //结果为0,如果把sum=sum++;改成sum++;就是100了
      

  9.   


    非也。'++'运算符的优先级比赋值号'='高,怎么会先赋值呢?1楼正解。++在前在后,++都会先执行,也就是i的值都会变为i+1,但i++和++i这两个表达式的值不同。i++这个表达式的值是自加之前i的值 ,++i这个表达式的值是自加之后i的值 。
      

  10.   

    i++ 的用法  google  下
      

  11.   

    我这里有更很的
    int c=5;
    c+=c++;
    System.out.println(c);
      

  12.   

    class test
    {
    public static void main(String[] args) 
    {
    int i=6; 
    int j=6;
    i=i++; 
    j=++j;
    System.out.println(i);
    System.out.println(j); }
    }
      

  13.   


    這個問題是關於操作符的優先級問題,上網找下下有。。
    http://www.zhubajie.com/task/?welcome=1387159 
      

  14.   

    据说i++ 比i=i+1效率高。
    如果真如你所说,i++也另外开辟了存储空间,那效率高在哪?
      

  15.   

    i++是先赋值再加的话,是不是可以理解成以下步骤?
    i = i;
    i++;
      

  16.   

    ........看j=i++,再看i=i++,这样应该比较好理解 如果是C语言的话i=i++;就相当于i++,可是JAVA里面有个临时中间变量了
      

  17.   

    这可深 了 你得先明白 值和引用的区别 再明白符号优先级
    i=i++先执行 = 再执行 ++  等号前的i和等号后的i 是两个不同的空间
      

  18.   

    i++是先使用再赋值,执行完:System.out.prinln(i)这条语句后i的值才变成了7,如果你换成++i,打印出的结果就是7了。
      

  19.   

    i先加1  i=7
    但是i++的值仍为6 
    最后将i++赋值给i 
    结果i=6