【Java入門講座】8章.メソッドの呼び出し方から引数と戻り値まで分かりやすく解説

Java入門レッスン

☜前の章へ for文で繰り返し処理や無限ループをする方法
☞次の章へ 配列とは


【Java入門講座】は全10章から構成される、初心者向けのJava学習コンテンツです。1章から10章まで学習して頂くことでJavaの基礎を学習することができます。

この記事で分かること
  1. メソッドとは
  2. メソッドを使うメリット
  3. メソッドの定義と呼び出し方
  4. 引数と戻り値とは
  5. 引数があるない等パターン別の書き方

ここでは、Javaのメソッドの基本的な使い方について学ぶことが出来ます。

引数あり、戻り値なしなどパターン別の書き方も分かるようになります。

メソッドとは

メソッドとは処理の塊であり、特定の機能を提供するものです。

Javaでは関数のことをメソッドと呼びます。

例えば、面積の計算など特定の機能を提供するメソッドを作成することができます。

メソッドを使うメリット

例えば、プログラムの中で同じ計算を何度も行いたい場合、何回も同じ計算を書くのは非効率です。

メソッドを使用すれば、効率的にソースコードを書くことが出来ます

足し算を連続で100回行う一連の処理をプログラム中の5か所に加えたい場合、メソッドを使わなければ、足し算の式を500回書く必要があります。

しかし、足し算を連続で100回行う一連の処理を、例えば「calc()」というメソッド名で、メソッドという1つの機能としてまとめれば、「calc();」とメソッド名を5回書くだけで済みます。

Javaでメソッドを使うメリット

処理をメソッドという形で1つの塊にすれば、プログラム中でその処理を使用したい場所に、メソッド名を書くだけで、処理を実行できるというメリットがあります。

メソッドの定義と呼び出し方

メソッドの定義
  • [修飾子] 戻り値の型 メソッド名(引数1,引数2,…){
    処理
メソッドの呼び出し方
  • メソッド名(引数1,引数2,…)
public class App {
    public static void main(String[] args) {
        // メソッドの呼び出しと表示
        System.out.println(calcSquare(2, 3));
    }

    //四角形の面積を求めるメソッド(戻り値あり)
    //calcSquare(int x, int y)のxとyのことを引数という
    public static int calcSquare(int x, int y) {
        //四角形の面積を求める
        int area = x * y;

        //returnの後のareaのことを戻り値という
        return area;
    }
}

出力結果

6

今回は例として、メソッド「calcSquare()」を作成しました。

「public」と「static」が修飾子です。
publicは「アクセス修飾子」と呼ばれます。
staticは「static修飾子」と呼ばれます。

publicにすると、どのクラスからでもメソッドcalcSquare()を使用できるようになります
staticにすると、そのメソッドはクラスメソッドになります

メソッドには「クラスメソッド」と「インスタンスメソッド」の2種類があるのですが、今回はクラスメソッドの扱い方を解説するので、インスタンスメソッドについては一旦置いておきます。

クラスメソッドは、「staticメソッド」、「静的メソッド」とも呼ばれます。

メソッドに慣れない間は、メソッドの定義に「public static」を書いておけば問題ないです。

staticの右に書かれているintは戻り値の型を表しています。
戻り値とは、メソッドを呼び出した箇所に、メソッドから渡す値のことです。

戻り値は「return」の後に書きます
今回は四角形の面積が入っている変数areaを戻り値として、メソッドを呼び出した箇所に渡しています。出力結果が6になりましたが、6が戻り値です。

メソッドはクラス内で定義する必要があります。上記の例ではクラス「App」の中にメソッド「calcSquare()」を作成しています。

引数に「int x」と「int y」を定義しています。引数とはメソッドを呼び出す時に、メソッドに渡すデータのことです。

メソッド「calcSquare()」には、呼び出し時に引数としてint型の値を2つ渡す必要があります。
「System.out.println(calcSquare(2, 3));」の2と3が引数です。引数である変数xと変数yはメソッド内で使用することができます。

メソッドの呼び出し自体は「calcSquare(2, 3)」が該当します。

メソッドの書き方が分かったところで、先ほどのメリットを再確認してみましょう。

public class App {
    public static void main(String[] args) {
        // メソッドを使わないとソースコードを無駄に書く必要がある
        int num1 = 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1;
        System.out.println(num1);
        int num2 = 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1;
        System.out.println(num2);
        int num3 = 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1;
        System.out.println(num3);
        int num4 = 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1;
        System.out.println(num4);
        int num5 = 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1;
        System.out.println(num5);

        System.out.println("-----------");

        // メソッドを使えば上記と同じことが簡単に行える
        sampleMethod();
        sampleMethod();
        sampleMethod();
        sampleMethod();
        sampleMethod();
    }

    public static void sampleMethod() {
        int num = 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1;
        System.out.println(num);
    }
}

メソッドを使うことで無駄な記述を減らせることが分かります。

メソッドの基本的な書き方と使い方

※上記の青い文字から読みたい項目へ移動することができます

①引数なし、戻り値なし

public class App {
    public static void main(String[] args) {
        // メソッドの呼び出し
        sampleMethod();
    }

    // メソッド
    public static void sampleMethod() {

        System.out.println("メソッドが呼び出されました。");

    }
}

出力結果

メソッドが呼び出されました。

戻り値がない場合は、戻り値の型を「void」にします。

引数なし、戻り値なしのメソッドは固定の処理を行いたい場合に有効です。

②引数あり、戻り値なし

public class App {
    public static void main(String[] args) {
        // メソッドの呼び出し
        sampleMethod("メソッドが呼び出されました。");
    }

    // メソッド
    public static void sampleMethod(String word) {

        System.out.println(word);

    }
}

出力結果

メソッドが呼び出されました。

メソッドの呼び出し時に引数をメソッドに渡しますが、直接値を書いても良いですし、変数を書いても良いです。

③引数なし、戻り値あり

public class App {
    public static void main(String[] args) {
        // メソッドの呼び出し
        System.out.println(sampleMethod());
    }

    // メソッド
    public static String sampleMethod() {

        return "メソッドが呼び出されました。";

    }
}

出力結果

メソッドが呼び出されました。

戻り値は、直接値を書いても良いですし、変数を書いても良いです。

④引数あり、戻り値あり

public class App {
    public static void main(String[] args) {
        String name = "佐藤";
        int age = 15;
        // メソッドの呼び出し
        System.out.println(sampleMethod(name, age));
    }

    // メソッド
    public static String sampleMethod(String name, int age) {

        String word = "私は" + name + String.valueOf(age) + "歳。";

        return word;

    }
}

出力結果

私は佐藤15歳。

引数には、異なる型を指定することもできます。


練習問題

  • キーボードで整数を2回入力します
  • 2つの値を比べて大きい値を戻り値とするメソッドgetMaxを作成しましょう
import java.util.Scanner;

public class App {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("整数を入力してください: ");
        int num1 = scanner.nextInt();

        System.out.print("もう一つの整数を入力してください: ");
        int num2 = scanner.nextInt();

        int result = getMax(num1, num2);

        System.out.println("大きい値は: " + result);

        scanner.close();
    }

    // 2つの整数を比較して大きい値を返すメソッド
    public static int getMax(int a, int b) {
        return (a > b) ? a : b;
    }
}

出力結果

整数を入力してください: 2 もう一つの整数を入力してください: 3 大きい値は: 3
  • キーボードで三角形の底辺と高さを入力します
  • 三角形の面積を戻り値とするメソッドgetAreaを作成しましょう
    (面積を求める公式:底辺 * 高さ / 2)
import java.util.Scanner;

public class App {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("三角形の底辺を入力してください: ");
        double base = scanner.nextDouble();

        System.out.print("三角形の高さを入力してください: ");
        double height = scanner.nextDouble();

        double area = getArea(base, height);

        System.out.println("三角形の面積は: " + area);

        scanner.close();
    }

    // 三角形の面積を計算して返すメソッド
    public static double getArea(double base, double height) {
        return (base * height) / 2.0;
    }
}

出力結果

三角形の底辺を入力してください: 10 三角形の高さを入力してください: 5 三角形の面積は: 25.0

☜前の章へ for文で繰り返し処理や無限ループをする方法
☞次の章へ 配列とは

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