我是靠谱客的博主 魁梧老鼠,最近开发中收集的这篇文章主要介绍java method 字节_java – 为什么在字节码级别的method1和method2相同?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我写了这个简单的Test类,看看Java如何评估Bytecode级别的布尔代数:

public class Test {

private static boolean a, b;

public static boolean method1(){

return !(a || b);

}

public static boolean method2(){

return !a && !b;

}

}

如果使用DeMorgan’s Laws简化method1(),应该得到method2()。在查看Bytecode(使用javap -c Test.class)后,它看起来像:

Compiled from "Test.java"

public class Test {

public Test();

Code:

0: aload_0

1: invokespecial #1 // Method java/lang/Object."":

()V

4: return

public static boolean method1();

Code:

0: getstatic #2 // Field a:Z

3: ifne 16

6: getstatic #3 // Field b:Z

9: ifne 16

12: iconst_1

13: goto 17

16: iconst_0

17: ireturn

public static boolean method2();

Code:

0: getstatic #2 // Field a:Z

3: ifne 16

6: getstatic #3 // Field b:Z

9: ifne 16

12: iconst_1

13: goto 17

16: iconst_0

17: ireturn

}

所以我的问题是,为什么在字节码级别的method1()和method2()完全一样?

最后

以上就是魁梧老鼠为你收集整理的java method 字节_java – 为什么在字节码级别的method1和method2相同?的全部内容,希望文章能够帮你解决java method 字节_java – 为什么在字节码级别的method1和method2相同?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部