1

(Java の専門家の皆さんには) おそらくばかげていると思われる簡単な質問がありますが、基本的な「メイン メソッド」の構文と、それが異なるように見える理由を理解するのに苦労しています。

最初にちょっとしたバックグラウンド: 私はいくつかの基本的な Java コースを受講しており、他の言語 (VBA、Python など) でプログラミングを行ったことがあるため、かなり早く習得することができました。

とにかく、「主な方法」については、このコースでは以下を使用します。

public void run() {
    // do whatever we were discussing
}

ただし、私が使用しているコンパイラ (www.compileonline.com、そして最近では JGrasp) は、明らかにこれしか認識しません。

public static void main(String args[]) {
    // code goes here.
}

これで基本的な理解 (「public」、「void」、さらには「static」の意味) はわかりましたが、なぜコースのレッスンで run() を使用し、コンパイラーがそうでないと言うのか理解できません。コンパイラが "main" メソッドを静的 (定数またはクラス変数のように) にし、args と呼ばれる文字列を使用することを要求するのは興味深いことです。この文字列を使用したことはありませんが、何らかの理由で必要なようです。

同様に、私が学んでいるコースでは単純な「println」を使用していますが、コンパイラには「System.out.println」が必要です...同じ状況の一部だと思っているので、それについて言及する必要があると思いました.

とにかく、誰かがここで何が起こっているのか知っていますか? コンパイラが必要とするテキストをコースのコードにコピー/貼り付けて同様の結果を得るのは簡単なので、大したことではありませんが、なぜそうなのかを実際に知ることは素晴らしいことです (私はこの種のコピー/貼り付け戦略は、将来「バグ」につながる可能性があります)。私がすぐに思いつくことができる唯一のことは、特定の機能を大幅に変更し、下位互換性がないJavaの更新があった可能性があるということですか? とにかく、事前にご意見をお寄せいただきありがとうございます。: )

4

4 に答える 4

3

ここに基本的な Java クラスがあります。

public class Basic implements Runnable {

    @Override
    public void run() {
        // TODO Code goes here
    }

    public static void main(String[] args) {
        Basic basic = new Basic();
        basic.run();
    }

} 

これは、main メソッドと run メソッドがどのように連携するかです。コードを run メソッドに配置し、main メソッドからコードを実行します。

Java はクラスとメソッドへの単一のエントリ ポイントを持つ必要があるため、メイン メソッドは静的です。args String 配列を使用すると、プログラムを実行するコマンド ラインからプログラムに文字列を渡すことができます。

たとえば、ファイル コピー プログラムには、入力ファイル パスと出力ファイル パスの 2 つの args パラメータがあります。これにより、ファイル コピー プログラムは任意のファイルをコピーできます。

于 2013-05-31T01:21:23.610 に答える
2

スタンドアロン アプリケーションの Java での実際の main メソッドは、次のとおりです。

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

それ以外はすべて、独自の main メソッドを持つフレームワークの一部であり、いくつかの設定を行ってからコードを呼び出します。

コードを呼び出す方法は、フレームワークによって異なります。Web フレームワークの場合は、doGet メソッドと doPost メソッド (サーブレット)、または @Path アノテーションが付けられたクラス (JAX-RS) で @GET と @POST アノテーションが付けられたメソッドを呼び出す可能性があります。それがアプレットまたは JavaFX アプリケーションである場合、コードは別の方法で呼び出されます。

于 2013-05-31T02:10:50.720 に答える