请帮助这个字节码打印什么?
BIPUSH 10
BIPUSH 7
IXOR
ISTORE 1
IINC 1 19
GETSTATIC java/lang/System.out : Ljava/io/PrintStream;
ILOAD 1
INVOKEVIRTUAL java/io/PrintStream.println (I)V发布于 2018-12-08 17:37:44
我强烈建议阅读JVM规范,它解释了一切。
看看你的具体例子
BIPUSH 10这会将10推到堆栈上。
BIPUSH 7这会将7推到堆栈上。堆栈现在是10 7
IXOR这是前两个元素。堆栈现在为10^7 = 13。
ISTORE 1这会将顶级元素存储在局部变量槽1中。堆栈现在为空,而局部变量为13。
IINC 1 19这将本地1乘以19。局部变量现在无效。
GETSTATIC java/lang/System.out : Ljava/io/PrintStream;这会将System.out推到堆栈上。
ILOAD 1这会将变量加载到堆栈中。
INVOKEVIRTUAL java/io/PrintStream.println (I)V这个印出来了。最后的结果是打印32。
此字节码可能是由Java代码生成的,如下所示
int x = 10 ^ 7;
x += 19;
System.out.println(x);https://stackoverflow.com/questions/53685051
复制相似问题