我看到需要与var进行比较的java字节码,如果它们相等则返回true,否则.....
if(var1==var2)
return true;
else
{ ...}
关于字节码
aload 1
aload 2
if_acmpne 6
iconst 1
ireturn
我理解iconst1 和ireturn 返回true。并了解 aload1 和 aload2 将 2 var 加载到堆栈。
但如何if_acmpne 6运作?什么是6?感谢
我看到需要与var进行比较的java字节码,如果它们相等则返回true,否则.....
if(var1==var2)
return true;
else
{ ...}
关于字节码
aload 1
aload 2
if_acmpne 6
iconst 1
ireturn
我理解iconst1 和ireturn 返回true。并了解 aload1 和 aload2 将 2 var 加载到堆栈。
但如何if_acmpne 6运作?什么是6?感谢
该if_acmpne指令从堆栈中弹出两个对象并比较它们。如果它们不相等,则它跳转到提供的偏移量,在这种情况下,它是方法代码开头的 6 个字节。
一般来说,您可以通过在此处阅读 JVM 规范来了解所有字节码指令:https : //docs.oracle.com/javase/specs/