-2
public class MyClass{
    static{
        System.out.println("Weired Behaviour");
    }
}

//Java MyClass を使用してコマンド ラインから呼び出された場合 (何とその理由) が出力されますか?

4

3 に答える 3

3

出力は次のようになります。

Weired Behaviour
Exception in thread "main" java.lang.NoSuchMethodError: main

実際にはウィアードではありません。以下は、JVM で発生する一連のアクティビティです。

アプリケーションを呼び出そうとすると、メイン クラスがロードされます。クラスの静的ブロックは、JVM がクラスをロードするときに実行されます。静的ブロックは一種のクラス初期化子であり、クラスがメモリにロードされたときにのみ呼び出されます。

クラスがロードされると、JVM はエントリ ポイントであるメイン メソッドを見つけようとします。main メソッドが見つからないため、例外がスローされます。

于 2012-06-29T18:27:48.803 に答える
0

Static Initalizer は、JVM がクラスをロードするとき、クラスのインスタンスが作成される前、さらに静的メソッドまたは変数が初期化される前に実行されるブロックです。

これにより、「Weired Behaviour」というステートメントが出力されますが、 「メイン」メソッドで あるエントリ ポイントを見つけようとすると、例外がスローされます。Exception in thread "main"

于 2012-06-29T18:46:16.990 に答える
0

あなたが実際にこのようなものを持っていると仮定して、あなたに怒鳴らないようにします:

public class MyClass{

    static{
        System.out.println("Weird Behavior");
    }

    public static void main(String[] args){}

}

出力として次のように表示されます。

Weird Behavior

これは、JVM がクラスをロードするときにクラス内の静的ブロックが実行されるためです。

于 2012-06-29T18:31:16.197 に答える