i++
代码:
int i = 1;
System.out.println(i++);
字节码:
iconst_1 // 把常量 1 加载到栈中
istore_1 // 把栈的元素弹出并赋值给局部变量i
iload_1 // 把局部变量 i 的值加载到栈中
iinc 1 by 1 // 把局部变量中 i的值加1,此时局部变量i的值为2
invokevirtual // 把栈的元素调用过来
return // return输出
++i
代码:
int i = 1;
System.out.println(++i);
字节码:
iconst_1 // 把常量 1 加载到栈中
istore_1 // 把栈的元素弹出并赋值给局部变量i
iinc 1 by 1 // 把局部变量中 i的值加1,此时局部变量i的值为2
iload_1 // 把局部变量 i 的值加载到栈中
invokevirtual // 把栈的元素调用过来
return // return输出
总结:
i++是先把值放入栈中,然后进行+1操作。
++i是先进行+1操作,然后在放入栈中。
思考以下代码结果:
代码:
int i = 1;
System.out.println(i++ + ++i + i++ + ++i);
System.out.println(i);
打赏
当前共有 0 条评论