手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

你知道java中 i=i++后i的值是多少么之二

时间:2024-10-13 23:44:09

1、如果i++后,不进行赋值操作,i的值为2下面就来比较一下,这种情况生成的bytecode和上一个有什么不同先来看看改过后代码吧Show me the code.Code:package chapter4;/** * Created by MyWorld on 2016/3/17. */public class IPlusPlusDemo { public static void main(String[] args) { int i = 1; i++; System.out.println(i); }}

你知道java中 i=i++后i的值是多少么之二

2、执行上面的代码,看看执行结果会是多少。终于是2了。和平时的认知保持一致了

你知道java中 i=i++后i的值是多少么之二

3、看看这种情况的bytecode命令:javap -c IPlusPlusDemo.class

你知道java中 i=i++后i的值是多少么之二

4、生成的btyecode:Compiled from "诔罨租磊IPlusPlusDemo.java"public class chapt髫潋啜缅er4.IPlusPlusDemo { public chapter4.IPlusPlusDemo(); Code: 0: aload_0 1: invokespecial #1 // Method java/lang/Object."<init>":()V 4: return public static void main(java.lang.String[]); Code: 0: iconst_1 1: istore_1 2: iinc 1, 1 5: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream; 8: iload_1 9: invokevirtual #3 // Method java/io/PrintStream.println:(I)V 12: return}

你知道java中 i=i++后i的值是多少么之二

5、按照上方的经验,找到相关的bytecode如下: 0: iconst_1 //把int型常量1push到栈中,即int 1现在在栈顶了 1: istore_1 //pop出栈顶的1,给i赋值。执行结束后i存放的值为1 2: iinc 1, 1//自增指令。变量i的值++,即当前i的值为2所以,现在i的值是2了。当前bytecode的情况和实际执行的结果是一致的

你知道java中 i=i++后i的值是多少么之二

6、和i=i++时是不是少了两条指令?少了的两条指令的作用是什么呢? 2: iload_1 //将变量i的值1再压栈,即放到栈顶。这条指令为什么少了呢?是不是进行++运算而进行的特殊处理呢 6: istore_1 //这个就是i=i++中的赋值操作。没有赋值,少了这条指令是对的

你知道java中 i=i++后i的值是多少么之二
© 手抄报圈