黑马程序员技术交流社区

标题: 问:j的值打印出来是多少 [打印本页]

作者: 丁晓宇    时间: 2012-2-19 03:44
标题: 问:j的值打印出来是多少
本帖最后由 丁晓宇 于 2012-2-19 04:00 编辑
  1.                 int j = 0;
  2.                 for (int i = 0; i < 100; i++) {
  3.                         j = j++;
  4.                 }
  5.                 System.out.println(j);
复制代码
请不要copy运行,写下答案后顺带写出理由、思路


暂设置回帖内容private、稍后会public
作者: 丁晓宇    时间: 2012-2-19 03:47
本帖最后由 丁晓宇 于 2012-2-19 03:59 编辑

{:soso_e147:}
作者: 万正    时间: 2012-2-19 08:21
还是0~~~~~~~~~~
作者: 何招俊    时间: 2012-2-19 09:07
本帖最后由 何招俊 于 2012-2-19 09:15 编辑

J的值打印出来还是0
作者: 陈建凡    时间: 2012-2-19 09:22
这道题关键 是 for 循环里面的 j = j++   ,先把 循环去掉 再解题,因为初值值 j=0; j=j++ 表达式也等于0, 不管循环多少次,j 的值都不会改变


作者: H07000223    时间: 2012-2-19 09:26
还是0~~~如果将j=j++换成j++就能累加了
作者: 马欢    时间: 2012-2-19 09:28
j输出还是0,因为你输出的是初始时的j和循环里的没关系啊。
作者: 邱纲    时间: 2012-2-19 09:54
不管运行多少次,还是0,哪怕是int j = 1;其结果不管运行了多少次还是j = 1,其值不会改变。因为j = j++; j=1,所以不管for循环运行了多少次,j的值是不会改变的。
作者: 彭坤    时间: 2012-2-19 10:01
好吧,我承认我运行了楼主代码,首先说一下结果吧:0
看到结果的时候确实也有点意外,相信楼上很多人都跟我有同样的反应
琢磨了一下,心中豁然开朗:
j++是先让j的值参与运算后再+1,这就好办了,
j=j++相当于先把j++中j的值拿出来赋值给等号左边的j运算,右边j的值是0,所以相当把0赋给了j,j的值不变,为0。
余下每次循环,j读到的值都是0,所以无论循环多少次,最后打印的值都为0



作者: 花开~的季节    时间: 2012-2-19 11:12
每次都是0
作者: 陈伟    时间: 2012-2-19 11:20
结果是0,因为j++运算是先使用j的值,然后再加1,每次循环j都是把上一次的0赋给j,所以循环结束后j的值仍然是0.
作者: 彭小芳    时间: 2012-2-19 11:24
这题出得好
作者: 王康    时间: 2012-2-19 14:08
如果是把j=j++; 改为 ++j;
则结果因该是楼主想要的100;

j++是先让j的值参与运算后再+1,这就好办了,
j=j++相当于先把j++中j的值拿出来赋值给等号左边的j运算,右边j的值是0,所以相当把0赋给了j,j的值不变,为0。

作者: 张红    时间: 2012-2-19 21:02
本帖最后由 张红 于 2012-2-19 21:08 编辑

                                int j = 0;
                for (int i = 0; i < 100; i++) {
                j = ++j;
                }
                System.out.println(j);

                                int j = 0;
                for (int i = 0; i < 100; i++) {
                j++;
                }
                System.out.println(j);
答案对比即可知晓。j++与++j的区别;累加与赋值的关系

作者: 温昌寿    时间: 2012-2-20 00:16
j++是先运行后执行的,所以每次其实都是对J赋0操作




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2