メソッドの「引数」と「戻り値」を使いこなそう!

docs

前回の記事では、Javaのメソッドについて解説しましたね。メソッドは、特定の処理をひとまとまりにしたもので、プログラムをスッキリさせるのに役立ちます。今回は、そのメソッドと切っても切り離せない関係にある**引数(ひきすう)戻り値(もどりち)**について、とことん深掘りしていきます!

「引数」と「戻り値」は、メソッドが外部とデータのやり取りをするための超重要な仕組みです。これを理解すれば、あなたのJavaプログラミングは間違いなくワンランクアップしますよ!


引数ってなに? – メソッドへの「お土産」

引数とは、メソッドに渡したいデータのことです。例えば、料理のレシピ(メソッド)を想像してみてください。「カレーを作る」というレシピがあったとして、あなたは「牛肉」と「じゃがいも」と「にんじん」を使ってカレーを作りたいとします。この「牛肉」「じゃがいも」「にんじん」が、メソッドに渡す引数にあたるイメージです。

メソッドを呼び出す際に、必要なデータを渡すことで、メソッドはそのデータを使って処理を実行できます。

引数の書き方

引数は、メソッド名の後ろにある () の中に変数名をセットで書きます。複数ある場合は ,(カンマ)で区切ります。

Java

// 引数がないメソッド(前回のおさらい)
public void greet() {
    System.out.println("こんにちは!");
}

// 引数があるメソッド
public void greetWithName(String name) { // String型のnameという引数を1つ受け取る
    System.out.println("こんにちは、" + name + "さん!");
}

public void add(int num1, int num2) { // int型のnum1とnum2という引数を2つ受け取る
    int sum = num1 + num2;
    System.out.println("合計は " + sum + " です。");
}

引数を使ってみよう!

実際に引数のあるメソッドを呼び出してみましょう。

Java

public class MethodExample {
    public static void main(String[] args) {
        // greetWithNameメソッドの呼び出し
        // "田中"という文字列を引数として渡す
        greetWithName("田中"); // 出力: こんにちは、田中さん!

        // addメソッドの呼び出し
        // 10と20という整数を引数として渡す
        add(10, 20); // 出力: 合計は 30 です。

        String userName = "山田";
        greetWithName(userName); // 変数も引数として渡せる! 出力: こんにちは、山田さん!

        int price = 1000;
        int taxRate = 100; // 100で割ってパーセント計算する想定
        calculateTotalPrice(price, taxRate); // 出力: 税込価格は 1100 円です。
    }

    public static void greetWithName(String name) {
        System.out.println("こんにちは、" + name + "さん!");
    }

    public static void add(int num1, int num2) {
        int sum = num1 + num2;
        System.out.println("合計は " + sum + " です。");
    }

    public static void calculateTotalPrice(int price, int taxRate) {
        double tax = price * (taxRate / 100.0); // 税率を計算
        int totalPrice = price + (int) tax; // 税込価格を計算
        System.out.println("税込価格は " + totalPrice + " 円です。");
    }
}

このように、引数を使うことで、同じメソッドでも渡すデータによって違う結果を出すことができます。汎用性がグッと上がりますね!

paizaで実行した結果


戻り値ってなに? – メソッドからの「お返し」

次に戻り値についてです。戻り値とは、メソッドが処理を実行した結果、呼び出し元に返したいデータのことです。再び料理のレシピで例えてみましょう。「カレーを作る」レシピを実行し終えたら、結果として「できたてのカレー」ができますよね。この「できたてのカレー」が、メソッドからの戻り値にあたります。

メソッドの処理結果を別の場所で使いたい場合に、戻り値を使います。

戻り値の書き方

戻り値は、メソッドの定義の public static の後ろ(または public の後ろ)に、戻り値の型を書きます。戻り値がない場合は void と書きます。

メソッドの中で return キーワードを使って、実際に値を返します。return が実行されると、その時点でメソッドの処理は終了し、呼び出し元に戻り値が返されます。

Java

// 戻り値がないメソッド(前回のおさらい)
public void greet() {
    System.out.println("こんにちは!");
}

// 戻り値があるメソッド
public int add(int num1, int num2) { // int型の戻り値を返すことを示す
    int sum = num1 + num2;
    return sum; // sumの値を呼び出し元に返す
}

public String createGreetingMessage(String name) { // String型の戻り値を返す
    String message = "こんにちは、" + name + "さん!";
    return message; // messageの値を呼び出し元に返す
}

public double calculateCircleArea(double radius) { // double型の戻り値を返す
    return Math.PI * radius * radius; // 円の面積を計算して返す
}

戻り値を使ってみよう!

戻り値のあるメソッドを呼び出すときは、その戻り値を受け取るための変数を用意します。

Java

public class MethodReturnValueExample {
    public static void main(String[] args) {
        // addメソッドの呼び出し
        // 戻り値(計算結果)をresult変数で受け取る
        int result = add(5, 3);
        System.out.println("計算結果: " + result); // 出力: 計算結果: 8

        // createGreetingMessageメソッドの呼び出し
        // 戻り値(メッセージ)をgreetingMessage変数で受け取る
        String greetingMessage = createGreetingMessage("佐藤");
        System.out.println(greetingMessage); // 出力: こんにちは、佐藤さん!

        // calculateCircleAreaメソッドの呼び出し
        double area = calculateCircleArea(5.0);
        System.out.println("半径5.0の円の面積: " + area); // 出力例: 半径5.0の円の面積: 78.53981633974483

        // 戻り値を直接別のメソッドの引数として使うこともできる!
        System.out.println("合計値の2倍は " + (add(7, 3) * 2) + " です。"); // 出力: 合計値の2倍は 20 です。
    }

    public static int add(int num1, int num2) {
        int sum = num1 + num2;
        return sum;
    }

    public static String createGreetingMessage(String name) {
        String message = "こんにちは、" + name + "さん!";
        return message;
    }

    public static double calculateCircleArea(double radius) {
        return Math.PI * radius * radius;
    }
}

戻り値を使うことで、メソッドの処理結果を再利用したり、別の処理に繋げたりすることができます。これによってプログラムの柔軟性が格段に向上します。

paizaで実行した結果


引数と戻り値の組み合わせ

もちろん、引数と戻り値は組み合わせて使うことができます。これがメソッドの真骨頂と言えるでしょう!

Java

public class FullMethodExample {
    public static void main(String[] args) {
        // 引数に商品名と価格、戻り値に税込価格(文字列)を受け取るメソッド
        String message1 = getTaxIncludedPriceMessage("リンゴ", 150);
        System.out.println(message1); // 出力例: リンゴの税込価格は 165 円です。

        String message2 = getTaxIncludedPriceMessage("バナナ", 200);
        System.out.println(message2); // 出力例: バナナの税込価格は 220 円です。

        // 引数に3つの数字、戻り値に最大値を受け取るメソッド
        int maxNum = findMax(10, 5, 20);
        System.out.println("3つの数字の最大値は " + maxNum + " です。"); // 出力: 3つの数字の最大値は 20 です。

        // 引数に配列、戻り値に合計値を受け取るメソッド
        int[] numbers = {1, 2, 3, 4, 5};
        int arraySum = calculateArraySum(numbers);
        System.out.println("配列の合計値は " + arraySum + " です。"); // 出力: 配列の合計値は 15 です。
    }

    /**
     * 商品名と価格を受け取り、税込価格を含むメッセージを返します。
     * @param productName 商品名
     * @param price 価格
     * @return 税込価格を含むメッセージ
     */
    public static String getTaxIncludedPriceMessage(String productName, int price) {
        double taxRate = 0.10; // 消費税10%
        int taxIncludedPrice = (int) (price * (1 + taxRate));
        return productName + "の税込価格は " + taxIncludedPrice + " 円です。";
    }

    /**
     * 3つの整数を受け取り、その中の最大値を返します。
     * @param a 1つ目の整数
     * @param b 2つ目の整数
     * @param c 3つ目の整数
     * @return 3つの整数の中の最大値
     */
    public static int findMax(int a, int b, int c) {
        int max = a;
        if (b > max) {
            max = b;
        }
        if (c > max) {
            max = c;
        }
        return max;
    }

    /**
     * 整数の配列を受け取り、その合計値を返します。
     * @param arr 整数の配列
     * @return 配列の合計値
     */
    public static int calculateArraySum(int[] arr) {
        int sum = 0;
        for (int num : arr) { // 拡張for文についてはまた今度!
            sum += num;
        }
        return sum;
    }
}

このように、メソッドに適切な引数を与え、適切な戻り値を受け取ることで、それぞれのメソッドが独立した小さな部品として機能し、これらを組み合わせることでより複雑な処理も簡単に記述できるようになります。

paizaで実行した結果


なぜ引数と戻り値が必要なの?

最後に、なぜ引数と戻り値が重要なのかをまとめておきましょう。

  1. 汎用性の向上: 同じ処理でも、引数を変えることでさまざまなデータに対応できるようになります。
  2. コードの再利用: 一度作ったメソッドは、引数と戻り値を通じて他の場所で何度でも使い回せます。
  3. 可読性の向上: メソッドが何を受け取り、何を返すのかが明確になるため、コードが読みやすくなります。
  4. 保守性の向上: 問題が発生した際に、原因の切り分けがしやすくなります。

これらを意識してメソッドを設計できるようになると、あなたのプログラムはもっと強力で効率的なものになっていきますよ!


まとめ

今回はJavaのメソッドにおける引数戻り値について詳しく解説しました。

  • 引数:メソッドに渡したいデータ
  • 戻り値:メソッドが処理を実行した結果、呼び出し元に返したいデータ

これらを活用することで、メソッドは外部とデータをやり取りし、より汎用性の高い処理を実現できます。

前回の記事(処理をまとめる魔法!Javaのメソッドって何? | ToolDocs)でメソッドの基本を理解したあなたは、今回の引数と戻り値をマスターすることで、Javaプログラミングの幅がぐっと広がったはずです。

次回は、さらに一歩進んで、クラスインスタンスといったJavaのオブジェクト指向の核心に迫っていきます。お楽しみに!

コメント

タイトルとURLをコピーしました