0

コマンドプロンプトからアプリを実行すると、インターネットから以下のコードを取得しました。主な方法は 3 つあります。

java MainTest 1 2 3

私は出力を取得します:

文字列メイン 1

public class MainTest {

    public static void main(int [] args) {
        System.out.println("int main " + args[0]);
    }
    public static void main(Object[] args) {
        System.out.println("Object main " + args[0]);
    }

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

}
  • 同じクラスで複数のメイン メソッドが必要なシナリオはありますか?

  • intObject [] args?を使用したメイン メソッドはまだ使用していません。それは可能ですか?でしかできないと思っていましたString[] args

  • 実行時にエラー メッセージが表示されることを期待していました。アプリケーションの実行時にエラーが発生しなかったのはなぜですか? 渡されたパラメータは常に解析されString、Java は最適なメイン メソッドを取得するということですか?


どうもありがとう!!

4

6 に答える 6

2

例はオーバーロードを示しています

main メソッドがオーバーロードされています。

JVM は、静的なメイン メソッドのみを検索し、文字列配列の引数を 1 つだけ受け入れる必要があります。だからあなたはString main 出力として得ています

同じクラスで複数のメイン メソッドが必要なシナリオはありますか?

それはあなたの要件にのみ依存します

int、Object [] args を使用した main メソッドをまだ使用していませんか? それは可能ですか?String[] 引数でのみ可能だと思いました

Object[]引数でメインメソッドを呼び出したいと思います。public static void main(Object[] args) { 他の単純なメソッドと同様で、MainTest.main(new Object{1,2}) で呼び出すことができます

実行時にエラー メッセージが表示されることを期待していました。アプリケーションの実行時にエラーが発生しなかったのはなぜですか? 渡されたパラメータは常に文字列に解析され、Java はメイン メソッドを取得するということですか。

コードは完全に問題がないため、エラーは発生しません。コードは、メイン メソッドのオーバーロードの例を示しています。

于 2015-12-02T05:40:44.383 に答える
1

JVM以下は としてのみ認識されますmain method

public static void main(String[] args){} は、クラスが JVM によって起動されるときに使用されます。

JVMでもpublic static void main(String args[]) {}使用できます。

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

残りはoverloadedメソッドです

また、標準varargsと同等であるため、署名を使用することもできますJVM

public static void main(String... args)

の位置はpublic and static変更になる場合があります。

JavaDocsから

于 2015-12-02T05:40:30.697 に答える
0

Javaでは、署名のすぐ下にあるメソッド:

public static void main(String[] args)

特別な権限を持ち、Main メソッドと見なされます。その他はオーバーロードされたメソッドです。

于 2015-12-02T05:42:07.023 に答える
0

スタティック メイン メソッドはいくつでも記述できますが、JVM は特定のメイン メソッド シグネチャを探します。

public static void main(String[] args)

他のメイン メソッドは存在しますが (他の Java 要素から呼び出すこともできます)、他のメイン メソッドは起動時に JVM によって呼び出されません。

于 2015-12-02T06:02:20.173 に答える
0

単純なメソッドを定義している場合、JVM は public static void main(String[] args) を除いてそれらを直接呼び出しません。したがって、オーバーロードの概念を持つメソッドが必要であり、静的であるため、クラス名を使用して直接呼び出すことができるという要件次第です。

私の理解によると、それはあなたの要件次第です。

于 2015-12-02T05:43:15.530 に答える