我有以下Java類:public class ArtClassInt { public boolean foo(int x) { if(x == 3956681) return true; else return false; } public boolean boo(int x) { if(x <= 952140568) return true; else return false; } public boolean boo1(int x, int y) { if(x <= y) return true; else return false; } public boolean zoo(int x) { if(x+1 < 1267) return true; else return false; }}當我編譯它并得到它的字節碼時,我得到了以下與源代碼中的 if 語句相對應的語句:ArtClassInt.boo1(II)Z: I4 Branch 3 IF_ICMPGT L17 - trueArtClassInt.boo1(II)Z: I4 Branch 3 IF_ICMPGT L17 - falseArtClassInt.boo(I)Z: I4 Branch 2 IF_ICMPGT L10 - trueArtClassInt.boo(I)Z: I4 Branch 2 IF_ICMPGT L10 - falseArtClassInt.foo(I)Z: I4 Branch 1 IF_ICMPNE L3 - trueArtClassInt.foo(I)Z: I4 Branch 1 IF_ICMPNE L3 - falseArtClassInt.zoo(I)Z: I6 Branch 4 IF_ICMPGE L24 - trueArtClassInt.zoo(I)Z: I6 Branch 4 IF_ICMPGE L24 - false我對助記符(即,,等)完全感到IF_ICMPGE困惑IF_ICMPNE。通過查看源代碼,我希望:方法中的 if 語句不 foo應該是if_icmpeqIF_ICMPNEboo和方法中的 if 語句不boo1應該是。 if_icmpleIF_ICMPGT方法中的一個zoo應該 if_icmplt不是IF_ICMPGE。有人可以解釋這背后的原因嗎?
添加回答
舉報
0/150
提交
取消