黑马程序员技术交流社区

标题: 求大神来解答问题 byte b=1;b=b++;然后输出b是多少? [打印本页]

作者: wangyu    时间: 2015-4-21 22:02
标题: 求大神来解答问题 byte b=1;b=b++;然后输出b是多少?
这个问题有人知道吗?能跟我说说思路吗?我什么我运行的结果是1、
作者: fanxia_2007    时间: 2015-4-21 22:41
这里要区分b=b++和b=++b的区别,前者将b的原始值付给左边的b,然后右边再自增,因此值是1。后者表达式是先自增,然后将自增后的值付给左边,因此是2.此外,如果没有赋值操作,单独的b++和++b是等效的,没有区别,值都是2.
作者: wangyu    时间: 2015-4-21 22:44
步骤:1、先算出右边表达式的值为1,也就是要赋值给左边的b的值为1,但是这个时候只是将1存在了临时的内存区域
2、b++,b的值变为2
3、再将第一步提取出来的1赋值给b,完成整句代码的复制操作
别理解成自增不执行 只是1赋值覆盖了2而已

作者: mxdeheima    时间: 2015-4-21 22:58
1
可以画个内存图分析

作者: mono    时间: 2015-4-22 09:43
肯定是1啊、
作者: 巴银    时间: 2015-4-22 09:50
同样学习了,
作者: 王英明    时间: 2015-4-22 09:53
1,不知道为什么!
作者: an_lucas    时间: 2015-4-22 10:03
我还以为是2.。。
作者: wwfangfang    时间: 2015-4-22 10:15
public static void main(String[] args) {
                int b = 1;
                int c = b++;
                System.out.println("b = "+b+"    c = "+c);
        }
你可以参考一下这个例子:int c = b++;是先进行赋值操作再进行自加操作
可以分解为下面两步就容易明白了:int c = b;b=++b




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