int j = 10;
j = j++;
输出j的结果是多少?原因是什么?求具体解释

解决方案 »

  1.   

    11,执行完这个语句之后如果打印j的话,因为先赋值,j = 10,执行完j = 11,如果直接打印那个赋值语句的话就是10了。
      

  2.   

    当然是11
    相信你应该知道:
    int j = 10;
    i = j++ ;
    这个时候i就是10,(但是j最后的值已经为11)
    但是当你执行j=j++的时候,就是j=11了(你搞明白前面一个括号的意思就能明白了)
      

  3.   

    why  i  can  not  get  something
      

  4.   

    can you speak Chinese, my English is poor.
      

  5.   

    我也以为是11,但一运行发现是10,我到百度找了一下,这是我copy的java中的i++或者i--:当遇到表达式中有i++,它会开辟一个新的内存存放原来的旧值,旧的内存中的值加1,然后(注意然后),表达式中用新的内存存放的旧值运算,把结果附给等号左边。
    所以i=i++后,i又成0勒
    你试试i=(i++)+(i++)
    i=(i++)+i
    i=(i++)+(i++)+i
      

  6.   

    10··因为自加是自身+1
    j=j++;这里先将原来的值传给j··j再自加··
    其实就是不痛两块内存地址的改变··
      

  7.   

    这东西真的很纠结 j = j++;应该是j = 10;..说不清了
      

  8.   

    肯定是10 的。。
      这个问题 在JAVA解惑里面有提到过。。
        但是我只是记住了。。 但是还是对这个有点想法
         int j = 199;
         j++;
         System.out.println(j);
       打印的话 是 200 也就是 说j++改变了 J的数值
       j = j++
       是把 199 赋值给料j  最后打印出来时 199
       但是 j++ 改变成的 200 到底是改变的谁呢?
      我对这个也是没有理解开啦
      

  9.   

    这个原因很简单,首先就是Java运算符的优先级,其次是运算符运算的“时效”性:在j=j++这个表达式中,运算符"="优先级低于运算符"++",所以先运算子表达式j++;注意运算符一旦参与运算是立即生效的,就是说当子表达式j++运算完成后,其表达式结果是之前的j值,但是j本身已经立刻变成了+1的值;之后进行的是=赋值运算,j被赋值为子表达式的结果值,即原来的j值。再举个更透彻的例子,大家实验一下就清楚了:
    j=10
    k=(j++)+(j++)
      

  10.   

    下面是编译后的java直接吗指令和运行时的堆栈变化和变量变化过程
    int j= 10
    j = j++
    指令   堆栈
    {}
    load 10 {10}
    store j {} j=10
    load j {10}
    dup    {10,10}
    load 1 {10,10,1}
    add    {10,11}
    store j  {10} j=11
    store j  {} j=10
      

  11.   

    毫无疑问是10啦  自己编一下就知道了 首先i=10;
    第二句i=i++;是将10付给i,++实在这个程序运行完了才加一
      

  12.   

    先说答案 :10 这里,我们可以发现一个问题,在学习java中, 
    i++  ++i  是有区别的,
    我们这样分析吧:
    定义的量在++前面的,我们先抄写下来它的值,然后再给它+1
    那么,那个+1,是在这一轮程序运行完毕之后才会加到i的上面。而++i就不一样了,它先对i进行了自增,先处理了++ 然后再输出值
      

  13.   

    运行了,答案是10。因为j++是等于10的,j=j++就说明10被赋值给了j,不管j之前是多少,赋值之后都等于10了。
      

  14.   

    int j = 10;
    j = j++;
    晕,差点被绕进去了
    仔细分析,就是j++和++j的不同之处
    j=j++,是先将j赋值给变量后再加1,而++j是先加1再赋值给变量,
    所以,结论如下:
    int j = 10;
    j = j++;
    System.out.println(j);结果应该是10

    int j = 10;
    j = ++j;
    System.out.println(j);结果应该是11
      

  15.   

    j=11。
    执行j=j++;开始,前面的j=10。之后j又自增,就11啦。
      

  16.   

    运行的结果是10,你可以这样想 如果不是j=j++;而是i=j++;那么应该是i=10,j=11;因为运算的次序是i=j;j=j+1;现在是j=j++; 在进行j++ 运算后返回的是j,而j的值是10,本来经过此步骤后要运算j=j+1的,但是你又重新给j赋值了,所以j就等于j了。
    如果你真的要搞清楚,我建议你debug看看哦