カテゴリ: JavaSilver試験対策 更新日: 2026/03/24

Javaのコマンドライン引数と起動パラメータを完全解説!初心者でも理解できる詳細ガイド

010
Javaのコマンドライン引数と起動パラメータ

先生と生徒の会話形式で理解しよう

生徒

「Javaのプログラムに引数を渡す方法がよく分からなくて困っています。」

先生

「引数は、javaコマンドの後に記述する起動パラメータとして渡すことができます。今日は、その使い方を詳しく解説しますね。」

生徒

「具体的にはどうすればいいんですか?」

先生

「では、基本的な例から見ていきましょう!」

1. 起動パラメータとは?

1. 起動パラメータとは?
1. 起動パラメータとは?

Javaのプログラムでは、コマンドライン引数を使ってプログラムに外部からデータを渡すことができます。これを「起動パラメータ」と呼びます。 引数は、mainメソッドのString[] args配列に格納されます。

次の例は、渡された引数を順に出力するプログラムです。


public class CommandLineExample {
    public static void main(String[] args) {
        System.out.println("引数の数: " + args.length);
        for (int i = 0; i < args.length; i++) {
            System.out.println("args[" + i + "]: " + args[i]);
        }
    }
}

次のコマンドで実行します:


> java CommandLineExample apple orange banana

出力:


引数の数: 3
args[0]: apple
args[1]: orange
args[2]: banana

このように、スペースで区切られた文字列が1つずつ配列に格納されます。

2. スペースや特殊文字を含む引数

2. スペースや特殊文字を含む引数
2. スペースや特殊文字を含む引数

スペースやダブルクォーテーションを含む文字列を引数として渡す場合には、以下のように記述します。

例: スペースを含む引数


> java CommandLineExample "Hello World" Test

出力:


引数の数: 2
args[0]: Hello World
args[1]: Test

ダブルクォーテーションを文字列として扱いたい場合は、エスケープ文字\を使用します。

例: ダブルクォーテーションのエスケープ


> java CommandLineExample \"Hello\" World

出力:


引数の数: 2
args[0]: "Hello"
args[1]: World

このように、スペースや特殊文字を扱う場合には適切なエスケープやクォーテーションが必要です。

3. 起動パラメータの挙動を理解する

3. 起動パラメータの挙動を理解する
3. 起動パラメータの挙動を理解する

次のプログラムを使用して、さまざまな起動パラメータの動作を確認してみましょう。


public class ParameterBehavior {
    public static void main(String... args) {
        System.out.println("受け取った引数の数: " + args.length);
        for (String arg : args) {
            System.out.println(arg);
        }
    }
}

以下のコマンドを試してみます。

  • java ParameterBehavior a b c
  • java ParameterBehavior "a b" c
  • java ParameterBehavior a "b c" d
  • java ParameterBehavior a \\"b\\" c

出力結果を確認し、各コマンドの挙動を学びましょう。

Javaをこれから始める人や、 オブジェクト指向の考え方を基礎から理解したい人には、 定番の入門書がこちらです。

スッキリわかるJava入門 第4版をAmazonで見る

※ Amazon広告リンク

4. 起動パラメータのエラー例

4. 起動パラメータのエラー例
4. 起動パラメータのエラー例

起動パラメータを使用する際、注意が必要な点もあります。例えば、配列インデックスを超えるアクセスや、数値として解釈できない文字列を数値変換しようとするとエラーになります。

以下はその例です。


public class ErrorExample {
    public static void main(String[] args) {
        try {
            int value = Integer.parseInt(args[0]);
            System.out.println("数値: " + value);
        } catch (NumberFormatException e) {
            System.out.println("数値に変換できません: " + args[0]);
        }
    }
}

適切なエラーハンドリングを実装することで、プログラムの安定性を向上させましょう。

5. 実践:コマンドライン引数で計算機を作ってみよう

5. 実践:コマンドライン引数で計算機を作ってみよう
5. 実践:コマンドライン引数で計算機を作ってみよう

コマンドライン引数は文字列(String型)として受け取られますが、数値として扱うことで計算を行うプログラムも簡単に作成できます。

プログラミング未経験の方でも分かりやすいように、「2つの数字を足し算する」シンプルなサンプルを用意しました。


public class Calc {
    public static void main(String[] args) {
        // 引数が2つない場合は使い方を表示して終了
        if (args.length < 2) {
            System.out.println("2つの数字を入力してください。例:java Calc 10 20");
            return;
        }

        // 文字列を整数に変換
        int num1 = Integer.parseInt(args[0]);
        int num2 = Integer.parseInt(args[1]);

        System.out.println(num1 + " + " + num2 + " = " + (num1 + num2));
    }
}

次のコマンドで実行してみましょう:


javac Calc.java
java Calc 15 30
15 + 30 = 45

このように、プログラムの外から数字を渡すだけで、コードを書き換えずに計算結果を変えることができます。これがコマンドライン引数の便利な点です。

6. 引数が渡されなかった時の対策(null回避)

6. 引数が渡されなかった時の対策(null回避)
6. 引数が渡されなかった時の対策(null回避)

コマンドライン引数を使う際に最も多いミスは、引数を渡し忘れてプログラムが強制終了してしまうことです。

何も渡さずに args[0] にアクセスしようとすると、ArrayIndexOutOfBoundsException というエラーが発生します。これを防ぐために、必ず「配列の長さ」を確認する癖をつけましょう。


public class SafeArgs {
    public static void main(String[] args) {
        // args.length が 0 なら引数がないということ
        if (args.length == 0) {
            System.out.println("名前が入力されていません。デフォルト名:ゲスト");
        } else {
            System.out.println("こんにちは、" + args[0] + "さん!");
        }
    }
}

実行結果の比較:


> java SafeArgs
名前が入力されていません。デフォルト名:ゲスト

> java SafeArgs 田中
こんにちは、田中さん!

実務では、ユーザーがどのような操作ミスをしてもプログラムが止まらないよう、このような「ガード(条件分岐)」を入れておくことが非常に重要です。

7. システムプロパティ(-Dオプション)との違い

7. システムプロパティ(-Dオプション)との違い
7. システムプロパティ(-Dオプション)との違い

Javaには、args以外にもプログラムに値を渡す方法があります。それが「システムプロパティ」です。

コマンドライン引数はプログラムの動作対象(ファイル名など)を渡すのに使われますが、システムプロパティは「設定情報(言語設定や環境名)」を渡すのに適しています。


public class SystemPropExample {
    public static void main(String[] args) {
        // システムプロパティ "env" を取得
        String environment = System.getProperty("env");
        System.out.println("現在の環境: " + environment);
    }
}

システムプロパティを渡すときは、クラス名の-D をつけて記述します:


java -Denv=Production SystemPropExample
現在の環境: Production

クラス名の「前」に書くのがシステムプロパティ、クラス名の「後」に書くのがコマンドライン引数(args)です。この位置の違いはJava試験や実務でもよく問われるポイントなので、しっかり整理しておきましょう。

まとめ

まとめ
まとめ

Javaのコマンドライン引数と起動パラメータについて学んできました。mainメソッドのString[] args配列を活用することで、外部からデータを渡し、プログラムを柔軟に動作させることが可能です。 スペースやダブルクォーテーションを含む引数の扱い方、そしてエスケープ文字の使用方法を理解することで、引数を適切に処理するスキルが身につきました。

以下は、まとめとして簡単なプログラム例です。


public class SummaryExample {
    public static void main(String[] args) {
        if (args.length == 0) {
            System.out.println("引数が指定されていません。");
        } else {
            System.out.println("受け取った引数:");
            for (String arg : args) {
                System.out.println(arg);
            }
        }
    }
}

実行例:


> java SummaryExample "Hello World" Test123

出力:


受け取った引数:
Hello World
Test123

このプログラムを参考に、引数を適切に処理するスキルを磨きましょう。

先生と生徒の振り返り会話

生徒

「コマンドライン引数の扱い方がよく分かりました!特にスペースやクォーテーションの挙動が面白かったです。」

先生

「その調子です。コマンドライン引数を使うことで、プログラムに柔軟性を持たせることができます。特に、データを外部から渡して動作を制御する場面で役立ちますよ。」

生徒

「ダブルクォーテーションやエスケープ文字を使えば、より複雑な引数も扱えるんですね!」

先生

「その通りです。エラー処理もしっかり行えば、信頼性の高いプログラムを作ることができます。引き続き練習していきましょう。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Javaのmainメソッドで使うString[] argsとは何ですか?どんな意味がありますか?

Javaのmainメソッドで使うString[] argsは、コマンドラインから渡された引数を受け取るための配列です。起動パラメータや外部からのデータ入力を受け取る役割があり、Javaプログラムの実行時に指定された引数が自動的にこの配列に格納されます。

Javaでコマンドライン引数を渡す方法はどうすればいいですか?

Javaのコマンドライン引数は、javaコマンドの後にスペース区切りで値を記述することで渡します。例えば「java Sample apple orange」のように実行することで、引数"apple"と"orange"が渡されます。

Javaで引数が複数あるときはどうやって扱えばいいですか?

Javaでは、複数のコマンドライン引数はすべてString[] argsに格納されます。forループや拡張for文を使って、args配列の中身を順番に処理できます。
JavaSilver試験対策の一覧へ
新着記事
Python
NumPyのdtypeとは?データ型の意味と仕組みを初心者向けに解説
NumPyのdtypeとは?データ型の意味と仕組みを初心者向けに徹底解説
Dart
Dartのクラスの作り方!定義・インスタンス生成の基礎
Dartのクラスの作り方を完全解説!初心者でも理解できるクラス定義とインスタンス生成の基礎
Java
Javaの同一性と同値性
Javaの同一性と同値性をわかりやすく解説!初心者向けの基礎知識
AWS
【AWS】s3 lsコマンドの使い方まとめ【オプション・ワイルドカード・日付指定】
【AWS】s3 lsコマンドの使い方まとめ【オプション・ワイルドカード・日付指定】
人気記事
Java
Java の Random クラスを使ってランダムな数値を生成する方法
JavaのRandomクラスの使い方を完全ガイド!初心者でもわかる乱数生成
Java
Java の getter メソッドと setter メソッドの使い方
Javaのgetterメソッドとsetterメソッドの使い方を完全ガイド!初心者でもわかるアクセス方法
AWS
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
AWS
【AWS】S3の料金体系まとめ!無料枠・課金ポイント・見積もり方法まで
【AWS】S3の料金体系まとめ!無料枠・課金ポイント・見積もり方法まで

🔌 USBポート不足を解消

Type-C 1本で拡張。
開発・作業環境を一気に快適に

UGREEN USB-Cハブを見る

※ Amazon広告リンク