-4

main() メソッドがテクノロジーによって定義されたプログラムの開始点であることは知っていますが、それでも main メソッドがなくてもエラーなしですべてを実行できます。私はこのコードを持っています

    public class WithoutMain {

        int x=10;
        int y=20;

        void show() {
            System.out.println(x);
            System.out.println(y);
        }

        static {
            WithoutMain t=new WithoutMain();
            t.show();
            System.exit(0);
        }

    }

このプログラムは main メソッドがなくても書けるのに、なぜ main メソッドが必要なのでしょうか?

4

4 に答える 4

1

なくてもプログラムを実行できますが、エントリポイントがないmain()と実行exeまたはファイルできません。main メソッドは、プログラムのデフォルトのエントリ ポイントであり、個別に jar ファイルを実行できます。独立して起動する必要があるプログラムを作成しようとしていない場合は、必要ありません。たとえば、他のプログラムや Web サイトによって参照される jar です。 これにより、引数を渡すことができますjar


main()

于 2012-10-15T17:38:22.483 に答える
1

私の知る限り、あなたのアプリケーションは main メソッドなしでは起動しません。あなたがそこに書いたトリックでもありません。実際に試してみましたか?

JLS (§8.7)は次のように述べています。

8.7. 静的初期化子

クラスで宣言された静的初期化子は、クラスが初期化されるときに実行されます (§12.4.2)。クラス変数のフィールド初期化子 (§8.3.2) と共に、静的初期化子を使用してクラスのクラス変数を初期化できます。

エントリ ポイントがないため、単一のクラスが読み込まれることはありません。これは、静的初期化子を持つクラスが読み込まれないことを意味します。したがって、静的初期化子は呼び出されません。


その他の情報:

メイン メソッドを作成しない場合、プログラムにはエントリ ポイントがありません。これは、誰かがライブラリを作成するときに使用されます (例: Java Mail)。ライブラリ自体を起動する必要はありません。main メソッドを作成する必要があるのは、ライブラリを使用するアプリケーションです。

于 2012-10-15T17:35:13.980 に答える
1

main(String[] argv)パラメータを渡して値を返すことができます...静的ブロックでそれを行うことはできません。

于 2012-10-15T17:36:43.637 に答える
0

Java 言語では、Java インタープリターを使用してクラスを実行すると、ランタイム システムはクラスの main() メソッドを呼び出して開始します。main() メソッドは、アプリケーションの実行に必要な他のすべてのメソッドを呼び出します。

于 2012-10-15T17:35:56.393 に答える