今天在公司的时候,突然研究了一下++i和i++;
刚开始还没有感觉有什么异常,现在想想,问什么i = i ++会是i原来的值呢?感觉有点意外!
特意使用javap查看了一下编译之后的字节码
发现了其中的原因!
字节码如下
0: iconst_0
1: istore_1
2: iload_1
3: iinc 1, 1
6: istore_1
7: return
我们可以看到,在第二行的时候.将i原来的值load出来了,而在第六行的时候,又将这个值给存储起来了,所以这个时候,i这个变量依然是原来的值
从中我们可以看到在Java中负责操作是需要两个步骤的,像使用iload_1将右值取出来,在使用istore_1将取出的游值存储