gpt4 book ai didi

java - 这两个程序的区别

转载 作者:行者123 更新时间:2023-12-01 14:37:55 25 4
gpt4 key购买 nike

假设有以下 2 个程序:

public class Main {

private static boolean test= false;

public static void main(String[] args) {
if(test)
method1();
}

private static void method1() {
//Some stuff
method2();
}

private static void method2() {
//Some stuff
}

}
<小时/>
   public class Main {

private final static boolean test= false;

public static void main(String[] args) {
if(test)
method1();
}

private static void method1() {
//Some stuff
method2();
}

private static void method2() {
//Some stuff
}

}
<小时/>

对于第二个,我想说编译器不会生成 bytecode对于 method1()method2()testfinal并设置为false .

它会生成 bytecode对于第一种情况?如果是,为什么?

编辑:

第一个的编译器输出:

public class Main extends java.lang.Object{
static{};
Code :
0: iconst_0
1: putstatic #10; //Field test:Z
4: return

public Main();
Code :
0: aload_0
1: invokespecial #15; //Method java/lang/Object."<init>":<>V
4: return

public static void main(java.lang.String[]);
Code :
0: getstatic #10; //Field test:Z
3: ifeq 9
6: invokestatic #21; //Method method1:()V
9: return

第二个编译器输出:

public class Main extends java.lang.Object{
public Main();
Code :
0: aload_0
1: invokespecial #12; //Method java/lang/Object."<init>":<>V
4: return

public static void main(java.lang.String[]);
Code :
0: return

最佳答案

简单的答案:当然,它会为两个示例中的两种方法生成字节代码。如果您快速编译这两个类并随后反编译这些类,您将看到一切都存在。

但是,如果您使用混淆器,情况可能会有所不同。

干杯!

关于java - 这两个程序的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16306417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com