A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 爱上这格调 中级黑马   /  2013-9-19 09:29  /  1602 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨增坤 于 2013-9-19 11:51 编辑

class Demo01
{
        public static void main(String[] args)
        {
                int  i;
                 i = 0;
                 i = i++;
                System.out.println(i);
         }
}输出结果为什么会是0;i初值为0,先把0赋给i然后自增了1输出结果不就是应该是1吗

评分

参与人数 1技术分 +1 收起 理由
薛鹏鹏 + 1

查看全部评分

9 个回复

正序浏览
class Demo01
{
         public static void main(String[] args)
         {
                     i=i++; //此时右边i=0先赋值给左边,右边i++更新内存(但是下面调用的是内存更新前的i!!有点绕,我是这样理解)
                    
                    /*
                     i++;      //更新内存
                    System.out.println(i);  //只会输出内存里面i=1
                     */
                 System.out.println(i);   //输出的是i++前的i(内存更新前的i),但是到此时内存里面的实际值是1

        }
}

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
sil 中级黑马 2013-9-19 11:08:37
9#
对于 i++ 或者++i 这些容易出事儿的玩意儿,我宁愿不用啊。。。。。。 为了让程序不那么成为“折磨人的存在”,还是写清楚比较好,比如 i=i+1;之类。
回复 使用道具 举报
  i = i++;你这句是先赋值给i,然后打印完i后才自增的,如果直接写成 i++ 或者写成 ++i 就是1了。
回复 使用道具 举报
        i++  :表示先不加,运行之后,在加;
        ++I :表示先加,然后在进行运算;
example:y=i++ :y=i;
                y=++I :y=i+1;

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
++i是运算前先自增
i++是运算后自增
回复 使用道具 举报
i++   先用后加,你先打印完了,才自增。
++i   先加后用,先自增了,才打印
回复 使用道具 举报
i=i++ 与i=++i 的区别
i=i++是先把0赋给i,然后i+1并没有赋值给i
你先别全用i,你用不同变量来试
  1. public class D6 {


  2.         public static void main(String[] args) {
  3.                 int a=0; int b=1;
  4.                 a=b++;
  5.                 System.out.println(a+""+b);

  6.         }

  7. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
注意a++;和++a的用法。 前者是后自加,后者是前自加。比如你的这个题,先把a的值赋给a,然后a的值+1,存储到内存空间,于是a输出的值就是0,而存储在内存的值是11. 如果这个题是++a的话,输出的值就是1.了。

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
呵呵,这个开始我也没想明白,其实你可以这样看:
1、在自增前,i 的值放在了一个临时内存中。
2、这时 i 的值自增为 1,等式左边的就运算完了。
3、这时就开始赋值运算,而赋值给左边的 i 时,是用临时内存中的值来赋值。

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马