m=m++,结果让你大吃一惊。

如图,本来以为m=m++和m++是同一个效果,没想到m的值居然还是0.

原来m++是一个表达式,是有返回值的,它的返回值就是m自加前的值,Java对自加是这样处理的:首先把m的值(注意是值,不是引用)拷贝到一个临时变量区,然后对m变量加1,最后返回临时变量区的值。程序第一次循环时的详细处理步骤如下: 步骤1 JVM把m值(其值是0)拷贝到临时变量区。 步骤2 m值加1,这时候m的值是1。 步骤3 返回临时变量区的值,注意这个值是0,没修改过。 步骤4 返回值赋值给m,此时m值被重置成0。

只能说java的套路太深了。

据说在c++里面,m=m++和m++真的是一个效果哦。

posted on 2016-06-28 21:40  在天成象  阅读(1226)  评论(1编辑  收藏  举报