-4

これの適切な理由を見つけることができません。

 public class MainTest {    
    static public  void main(String[] args) {

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

このコードを実行すると、次のように出力されます:HAI

static class MainTest { 
        static void main(String[] args) {

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

このコードは正常にコンパイルされますが、実行すると例外が発生しますMain method not public

public class MainTest { 
        public  void main(String[] args) {

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

このコードは正常にコンパイルされますが、実行すると例外が発生します

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

この動作の理由を説明できる人はいますか。

static を指定しなかった場合、インスタンスメソッドとして使用されないのはなぜですか。クラス外で使用しない場合、メイン メソッドをパブリックにする必要があるのはなぜですか? 静的メイン メソッドが呼び出されているため、メイン メソッドを使用せずに任意の静的メソッドにメイン メソッド ロジックを配置できますか?

4

3 に答える 3

1

public static void main(String args[])

public、static、void の 3 つのキーワードを常に含める必要があります。

于 2013-05-08T02:08:22.580 に答える
1

メソッドに指定子がない場合 (2 番目の例のように)、同じパッケージ (同じフォルダー) 内の他の Java ファイルからのみアクセスできます。これは、JVM がコードを実行しようとするときに問題を引き起こします。これは、そのパッケージの一部ではないためです。

3 番目のポイントを理解するには、インスタンス メソッドがどのように機能するかを理解する必要があります。これらはインスタンスでのみ呼び出すことができます。そのため、JVM は を呼び出す前に、コンストラクターを使用してクラスをインスタンス化する必要がありますmain。Java の設計者は、静的であることを要求する方が簡単であると判断したmainため、静的でない場合はエラーが発生します。

于 2013-05-08T02:09:46.837 に答える