Java | mainメソッドの基本

Java Java
スポンサーリンク

初心者向けにやさ〜しく噛み砕いて、main メソッドの意味・書き方・よくある間違い、そして練習問題(解答と解説付き)までまとめます。実機で試せるように、コンパイル/実行コマンドや期待出力も書きます。

1. main メソッドって何?(一言)

プログラムを「スタート」させるための入口(エントリーポイント)です。Javaでプログラムを実行すると、まず main が呼ばれてそこから処理が始まります。

2. 決まりの形(シグネチャ)

public static void main(String[] args) {
    // ここに処理を書く
}
Java

これが 正しい形。順に意味をやさしく説明します。

  • public:どこからでも呼べます。実行時にJVM(Java仮想マシン)から呼ばれるので public にします。
  • static:インスタンス(new したオブジェクト)を作らなくても呼べる、クラス単位のメソッドという意味。起動時にまだオブジェクトがないので static 必須です。
  • void:返り値(戻り値)がないという意味。main 自体は何も返しません(別途 System.exit で終了コードを返す方法はあります)。
  • main:メソッド名。正確に main と書く必要があります(大文字小文字も区別)。
  • (String[] args):文字列の配列を受け取る引数。実行時のコマンドライン引数(例えば java Hello worldworld)がここに入ります。

3. 実際の流れ(例)

Hello.java

public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello, Java!");
    }
}
Java

コンパイルと実行(ターミナル)

javac Hello.java
java Hello

出力:

Hello, Java!

4. コマンドライン引数(args)の使い方

argsString[](文字列配列)。例えば:

public class Greet {
    public static void main(String[] args) {
        if (args.length > 0) {
            System.out.println("こんにちは、" + args[0] + "さん!");
        } else {
            System.out.println("こんにちは、ゲストさん!");
        }
    }
}
Java

実行例:

javac Greet.java
java Greet Taro

出力:

こんにちは、Taroさん!

引数がない場合 args.length == 0 です。

5. よくある「間違い」と対処法

  • Main と大文字で書いた → Javaは大文字小文字区別するので main と正確に書く。
  • static を忘れると実行時に「メインメソッドが見つかりません」となる(コンパイルでは通る場合もあるが実行できない)。
  • シグネチャを変える(引数を String args にするなど) → 正しいは String[] args(ただし String args[] でも可)。ただし引数の型や戻り値を変えるとJVMがエントリポイントとして認識しない。
  • クラス名とファイル名が違う → public class HelloHello.java にする必要あり。

6. 少し実用的な例:引数で数値を受け取って合計する

public class SumArgs {
    public static void main(String[] args) {
        int sum = 0;
        for (String s : args) {
            try {
                sum += Integer.parseInt(s);
            } catch (NumberFormatException e) {
                System.out.println("数値でない引数:" + s + " は無視します。");
            }
        }
        System.out.println("合計: " + sum);
    }
}
Java

実行例:

javac SumArgs.java
java SumArgs 10 20 5

出力:

合計: 35

7. 練習問題(初心者向け) — 解答・解説付き

問題1

HelloName というクラスを作り、コマンドライン引数で名前を受け取って Hello, <名前>! と表示するプログラムを作ってください。引数が無ければ Hello, World! と表示すること。

解答例

public class HelloName {
    public static void main(String[] args) {
        if (args.length > 0) {
            System.out.println("Hello, " + args[0] + "!");
        } else {
            System.out.println("Hello, World!");
        }
    }
}
Java

実行

javac HelloName.java
java HelloName Alice

出力:

Hello, Alice!

解説args.length で引数の数を確認。最初の名前は args[0] に入る。


問題2

Multiply を作成。コマンドライン引数で2つの整数を受け取り、それらの積を表示する。引数が2つでない場合は使い方を表示する。

解答例

public class Multiply {
    public static void main(String[] args) {
        if (args.length != 2) {
            System.out.println("使い方: java Multiply <整数1> <整数2>");
            return;
        }
        try {
            int a = Integer.parseInt(args[0]);
            int b = Integer.parseInt(args[1]);
            System.out.println("積: " + (a * b));
        } catch (NumberFormatException e) {
            System.out.println("整数を入力してください。");
        }
    }
}
Java

解説:引数数チェック→ Integer.parseInt で文字列 → 整数へ。例外処理で入力ミスに対応。


問題3(少し発展)

ReverseArgs:受け取ったコマンドライン引数を逆順で表示するプログラムを作成。

解答例

public class ReverseArgs {
    public static void main(String[] args) {
        for (int i = args.length - 1; i >= 0; i--) {
            System.out.print(args[i]);
            if (i > 0) System.out.print(" ");
        }
        System.out.println();
    }
}
Java

解説:配列の最後からループして順序を反転して表示。

8. デバッグのヒント

  • 実行時に「メイン・メソッドが見つかりません」と出るときは、
    • クラス名とファイル名が一致しているか、
    • main のシグネチャが正しいか(public static void main(String[] args))、
    • 実行コマンドで正しいクラス名を指定しているか(拡張子 .class は書かない)を確認する。
  • java 実行時はクラスパスやパッケージ構成も影響します(パッケージを指定している場合は java package.ClassName のように実行)。

9. まとめ(覚えておくべき最小限)

  1. Javaプログラムの入口は public static void main(String[] args)
  2. args はコマンドラインからの入力を受け取る配列。
  3. javac でコンパイル、java でクラス名を指定して実行。
  4. よくあるミスは main の綴り/大文字小文字、static の忘れ、ファイル名とクラス名の不一致。
タイトルとURLをコピーしました