如果你不理解,你不会看编译后的代码吗?
ILOAD 1
IINC 1 1
ISTORE 1
上面是j=j++;这一句的编译后代码,很明显,首先ILOAD 1载入局部变量j到栈顶,IINC 1 1给局部变量j加上1,ISTORE 1将栈顶存入j,注意这个时候栈顶的值是j最开始的值,也就是没有加1之前的值,所以你这个和j=j等效,或者说是没有实际作用的
ILOAD 1
IINC 1 1
ISTORE 1
上面是j=j++;这一句的编译后代码,很明显,首先ILOAD 1载入局部变量j到栈顶,IINC 1 1给局部变量j加上1,ISTORE 1将栈顶存入j,注意这个时候栈顶的值是j最开始的值,也就是没有加1之前的值,所以你这个和j=j等效,或者说是没有实际作用的
解决方案 »
- JNA疑问
- 一程序编译不过
- 多线程程序中子线程能否将自己kill掉,但不影响其他子线程和主线程的运行?
- 【Java 如何连接 Paradox 数据库文件】
- 看看这个网站!注册即送分!!!!!!!!
- JVM是什么?和jdk有什么区别
- 教育网哪有JDK的下载啊?
- 质疑CMP,根本就不实用!稍微复杂一点的情况就没戏。 而且速度上也没有什么优势。
- 照着书enter the code ,there is also some wrong with it,please help me
- Eclipse安装
- Java中HashMap是使用拉链法来解决冲突的,请问是为什么?
- 这段代码怎么去掉重复代码呢?想一小时了,领导让我优化,,
先赋值再自加1,自加1的值没有赋值给j,所以永远是0.
你可以换成j=++j,这样应该是你想要的效果,先自加1,再将自加后的结果赋值给j。