0

我最近对 ​​Java 字节码产生了兴趣,并创建了以下 Hello World 程序。

打印了“Hello World”,但是我不知道为什么没有打印“Creating awesome object”。你能帮我弄清楚我做错了什么吗?

.class public HelloWorld
.super java/lang/Object

.method public <init>()V
    .limit stack 2

    aload_0  ; push 'this' unto stack
    invokespecial java/lang/Object/<init>()V  ; invoke constructor

    getstatic java/lang/System/out Ljava/io/PrintStream;
    ldc "Creating awesome object!"
    invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V

    return
.end method

.method public static main([Ljava/lang/String;)V
    .limit stack 2

    getstatic java/lang/System/out Ljava/io/PrintStream;
    ldc "Hello world"
    invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V

    return
.end method
4

1 回答 1

1

我对 Java 字节码了解不多,但在我看来,您没有创建HelloWorldin的实例main。如果您不创建实例,则不会调用构造函数,因此您拥有它。:)

于 2016-03-11T16:23:10.747 回答