刚接触编程时,i++ 与 ++i 这类问题确实难以理解,即使知道它俩区别,还是不能做到学以致用,今天让我带领新手把它给摸透了,看它葫芦里卖的是什么药,高手可以飘过哦~~
什么是 i++,什么是 ++i
i++ 和 ++i 都是 i=i+1 的缩写,唯一区别是执行与引用的顺序。i++ 先引用后计算, ++i 先计算后引用
输出结果
result=9 result=10有这样一道面试题: Int i=0; i=i++; 执行这 2 句话后变量 i 的值为(A) A. 0 B. 1 C. 2 D. 3
查看编译后生成的字节码得出结论:java 编译器对于 i++ 会先将 i 的值保存至另一变量 然后再对 i++,另一变量仍没有改变。 而对于 ++i 是先对 i++ 然后保存到另一变量 然后赋值。
iconst_0 // 将 int 型 0 推送至栈顶 istore_1 // 将栈顶 int 型数值存入第二个本地变量 i=0(int i=0) iload_1 // 将第二个 int 型本地变量推送至栈顶然后将 i 推送至栈顶 0 iinc 1 1 // 将指定 int 型变量增加指定值(i++, i--, i+=2)完成 i++ istore_1 // 将栈顶 int 型数值存入第二个本地变量将栈元素赋值给了 i,i=0 getstatic java/lang/System/out Ljava/io/PrintStream; iload_1