黑马程序员技术交流社区

标题: 今天看到了一个代码,能帮我解释下对吗? [打印本页]

作者: psaa    时间: 2015-6-15 16:39
标题: 今天看到了一个代码,能帮我解释下对吗?
    int a = 1;
     a = a++;
System.out.println(a);
为什么结果是1,让我不理解了一些时间,能帮我看看我理解的对吗?
这条题我能理解成,
在内存内的运算是先a=a的赋值也就是1赋值给了a,而后a++,也是a=a+1;就是1+1=2;2赋值给了a,
现在内存的a是2的值,但是java是由右边往左边读取的,a=a才会是1赋值给了a.
得出来的结果才会是1。
我是刚刚人门的菜鸟,有人明白这个的吗?
我这样的理解是对的吗?
还有就是2的值我要怎么能把它打印出来。。。


作者: 耀阳圣尊    时间: 2015-6-15 18:05
理解的对,而且在内存中也确实出现了2.你可以在外面套一个循环,就能看出来了

作者: psaa    时间: 2015-6-15 19:31
耀阳圣尊 发表于 2015-6-15 18:05
理解的对,而且在内存中也确实出现了2.你可以在外面套一个循环,就能看出来了
...

能给我打个代码出来吗?我不是很清楚要用那个代码。。
作者: 1千克=1024克    时间: 2015-6-15 19:41
"现在内存的a是2的值,但是java是由右边往左边读取的,a=a才会是1赋值给了a."

这句话是什么意思   内存中确实是a=2   然后呢  搞得不太懂
作者: lwen    时间: 2015-6-15 19:58
a确实是2了,但是应该是++的位置吧,放到后面是先赋值然后再加1的
作者: psaa    时间: 2015-6-15 21:02
[quote]1千克=1024克 发表于 2015-6-15 19:41


你可以敲下代码,结果是1的
作者: psaa    时间: 2015-6-15 21:03
lwen 发表于 2015-6-15 19:58
a确实是2了,但是应该是  的位置吧,放到后面是先赋值然后再加1的

你试试敲下代码,
作者: wenxueaaa555    时间: 2015-6-15 21:54
耀阳圣尊 发表于 2015-6-15 18:05
理解的对,而且在内存中也确实出现了2.你可以在外面套一个循环,就能看出来了
...

请问怎么嵌套?不解,求解:victory:
作者: 十五号的人生    时间: 2015-6-15 21:56
赞一个   
作者: QQheima    时间: 2015-6-15 21:58
参观一下~
作者: 13699266500    时间: 2015-6-15 22:13
因为是后++,所以在运行a++的时候已经把1赋值给了a,所以输出为1




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