2016-03-11 35 views
0

我最近對Java字節碼感興趣,並創建了以下Hello World程序。Jasmin的Java字節碼:爲什麼消息沒有打印在屏幕上?

「Hello World」已打印,但我無法弄清楚爲什麼「創建真棒對象」未打印。你能幫我弄清楚我做錯了什麼嗎?

.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 
+0

你實際上並沒有在任何地方執行構造函數。 – Antimony

回答

1

我不知道很多關於Java字節碼,但在我看來,你不main創建HelloWorld一個實例。如果你不創建一個實例,構造函數不會被調用,所以你有它。 :)

相關問題