1

Javaプログラムの実行はどこから始まりますか? メインメソッドからだと人々が言うのを聞いた。実行は静的ブロックから始まると思います。私は正しいですか??

4

6 に答える 6

4

このプログラムの出力:

public class XXX {

    static YYY dependend = new YYY();

    static {
        System.out.println("3");
    }

    public static void main(String[] args) {
        System.out.println("4");
    }
}

class YYY {
    static {
        System.out.println("1");
    }
    YYY(){
        System.out.println("2");
    }
}

もちろんです

1
2
3
4

つまり、プログラムのエントリ ポイントmainは です。しかし、その前に実行されるコードがあります。そして、この「メインの前に実行される」コードが同じクラスにある必要はありません。また、このコードが静的初期化子 (「2」を参照) にある必要もありません。

于 2013-04-07T14:38:44.140 に答える
2

main メソッドは、プログラムへのエントリ ポイントです。「メイン」メソッドを含むクラスに、初期化が必要な静的メンバーまたは静的コード ブロックがある場合、これは「メイン」メソッドの前に実行されます。

このサンプル コードを見てください。

public class Test {

    private static Object obj = new Object();

    public static void main(String[] args) {

        System.out.println("test");
    }

}

オブジェクトの初期化行にブレークポイントを設定すると、println 行の前にブレークポイントが実行されることがわかります。

于 2013-04-07T14:36:41.930 に答える
0

Java アプリケーションは通常、main メソッドによって初期化されます。

public static void main(String... args){
    System.out.println("Executing my application...");
}

JVM がクラスをロードすると、静的ブロックが実行されます。main メソッドなしでアプリケーションを起動することはできません。そうしないと、JVM にエラー メッセージが表示されます。静的ブロック(例)
を使用してコードを実行することは、理論的には可能です。しかし、GUI を作成したくない他のスクリプト (または初期化メソッドで行うこと) によってメソッドが呼び出される可能性があるため、アプリケーションを初期化するのは悪い方法です。例えば:doSomethingElse

class Test2 extends Object{
    public static void doSomething(){
        System.out.println("Calling Test's doSomethingElse method.");
        Test.doSomethingElse();
    }
}

Test2 の doSomething メソッドは呼び出すだけですが、クラスが JVM によってロードさdoSomethingElseれるため、GUI を作成するメソッドも呼び出されます。TestJVM がクラスをロードし、クラスが静的ブロックを取得すると、静的ブロックが最初に呼び出されます。Test の静的ブロックがexecutingClassメソッドを呼び出すようになり、GUI が作成されます (ただし、Test2 はdoSomethingElse.

最後に、静的ブロックを使用してアプリケーションを初期化しないでください。

  1. 静的ブロックは、そのクラスに必要なものを作成するためにのみ使用する必要があります。
  2. main方法も必要です。
  3. 予期せぬ影響を与える可能性があります。
于 2013-04-07T15:05:10.750 に答える
0

これは、Java プログラムの開始メソッドです。

public static void main(String[] args){
    ...
}
于 2013-04-07T14:36:24.587 に答える
0

静的ブロックは、クラスが初期化されるときに実行されます。メソッドを含むクラスmainの場合、メソッドを使用する前にクラスを初期化する必要があるため、このメソッドを呼び出す前になります。他のクラスの場合、クラスを初期化する必要がない場合は、後で行うか、まったく行わないことができます。

于 2013-04-07T14:41:32.403 に答える
0

クラスに static ブロックと main メソッド () が含まれている場合、() jvm Wil Executive は最初に static ブロックが実行され、次に main メソッドが実行されます。ただし、クラス内の静的ブロックについて言及せず、クラスにメイン メソッドのみが含まれている場合、jvm はメイン メソッドのみから実行を開始します。

于 2019-05-28T13:14:24.133 に答える