スライドショー

【Java入門】return文でメソッドの戻り値を使う(複数の戻り値も解説)

こんにちは!フリーライターの中井です。

Javaにはメソッドの値を返す戻り値を使うためのreturn文があります。この記事では、

  • メソッドの戻り値とは
  • return文とは
  • return文で戻り値を返す方法

という基本的な内容から、複数の戻り値を返す方法などの応用的な使い方に関しても解説していきます。今回はメソッドの戻り値を使うreturn文について、わかりやすく解説します!

メソッドの戻り値とは

メソッドの戻り値とは、メソッドの呼び出し元に返す値のことをいいます。メソッドの戻り値がない場合は、次のようにメソッドの中ですべての処理を行うプログラムになります。

サンプルプログラム:

public class Main {

	public static void main(String[] args) {
		num(5, 2);
	}

	private static void num(int num1, int num2) {
		int addAns = num1 + num2;
		System.out.println("答えは" + addAns+ "です。");
	}

}

実行結果:

答えは7です。

return文とは

return文は、そこで処理を終了し、呼び出し元に処理を戻します。通常、メソッドは最後まで処理を行うと呼び出し元に処理が戻るため、条件によって途中で処理を中断する場合などに使われます。次のサンプルプログラムを見てください。

サンプルプログラム:

public class Main {

	public static void main(String[] args) {
		num(0, 2);
	}

	private static void num(int num1, int num2) {
		if (num1 == 0) {
			System.out.println("呼び出し元に戻ります。");
			return;
		}
		int addAns = num1 + num2;
		System.out.println("答えは" + addAns + "です。");
	}

}

実行結果:

呼び出し元に戻ります。

上記のプログラムでは、numメソッドの引数num1が0の場合に、return文が実行されます。return文が実行された後は、それ以降の処理が行われていないことがわかります。

return文で戻り値を返す方法

return文を使って、呼び出し元に戻り値を返すことができます。戻り値を返すメソッドは次のように記述します。

書き方:

修飾子 戻り値の型 メソッド名(){
  // 処理

  return 戻り値;
}

呼び出し元は次のように戻り値を使用することができます。

書き方:

public static void main(String args[]) {
  戻り値の型 変数 = メソッド名();
}

この呼び出し元のメソッドのように戻り値を返さない場合には、戻り値の型にvoidを指定します。voidは戻り値を返さないことを意味し、そのメソッド内ではreturn文を使う必要がありません。

基本的な使い方

最初に紹介したプログラムを、戻り値のあるメソッドに書き換えていきましょう。

サンプルプログラム:

public class Main {

	public static void main(String[] args) {
		int addNum = add(5, 2);
		System.out.println("答えは" + addNum + "です。");
	}

	private static int add(int num1, int num2) {
		int addAns = num1 + num2;
		return addAns;
	}

}

実行結果:

答えは7です。

上記のaddメソッドは、引数を足し算し、その答えをreturn文を使って返します。mainメソッドでは、その戻り値を変数addNumに代入しています。これにより、mainメソッドで足し算の結果を表示することができています。

return文で条件によって処理を終了させる方法

条件によって異なる戻り値を返し、処理を終了させることもできます。次のサンプルプログラムを見てください。

サンプルプログラム:

public class Main {

	public static void main(String[] args) {
		boolean b = divide5(25);
		if (b) {
			System.out.println("割り切れます。");
		} else {
			System.out.println("割り切れません。");
		}
	}

	private static boolean divide5(int num1) {
		int ans = num1 % 5;
		if (ans == 0) {
			return true;
		}
		return false;
	}

}

実行結果:

割り切れます。

上記のdivide5メソッドは、引数が5で割り切れた場合に「return true;」で戻り値としてtrueを返し、処理を終了します。その後の「return false;」は実行されません。

nullをreturn文で返す方法

戻り値として、何も値が入っていないことを表すnullを返すこともできます。

サンプルプログラム:

public class Main {

	public static void main(String[] args) {
		String[] arrays1 = {"a", "b", "c"};
		System.out.println(getFirstString(arrays1));

		String[] arrays2 = {};
		System.out.println(getFirstString(arrays2));
	}

	private static String getFirstString(String[] arrays) {
		if (arrays == null || arrays.length == 0) {
			return null;
		}

		return arrays[0];
	}

}

実行結果:

a
null

上記のgetFirstStringメソッドは、引数として受け取ったString配列arraysの最初の要素を返すメソッドです。arraysがnull、または長さが0の場合に「return null;」でnullを返します。

getFirstStringメソッドは、メソッドの定義でString型の戻り値を返す宣言をしているので、返す値がない場合も「return;」で処理を終了することはできません。

複数の戻り値を返す方法

returnは非常に便利ですが、1つの戻り値しか返せないのが難点です。もし複数の値を返したいときにはどうすればよいのでしょうか?

複数の値を返すには、複数の変数を持った1つのクラスにして返す方法が考えられます。変数num1も変数num2も返したいときには、num1とnum2を持つ1つのクラスにすれば返すことができます。次のサンプルプログラムを見ていきましょう。

サンプルプログラム:

public class Main {

	public static void main(String[] args) {
		int num1 = 2;
		int num2 = 3;

		Calculation calc = new Calculation();
		Calculation value = calc.calcMethod(num1, num2);

		System.out.println("足し算:" + value.add);
		System.out.println("掛け算:" + value.mul);
	}

}

class Calculation {
	int add;
	int mul;

	public Calculation calcMethod(int num1, int num2) {
		Calculation calc = new Calculation();
		calc.add = num1 + num2;
		calc.mul = num1 * num2;

		return calc;
	}
}

実行結果:

足し算:5
掛け算:6

上記のプログラムでは、calcMethodで足し算と掛け算を行い、2つの計算結果を1つのクラスにまとめて、mainメソッドに返し出力しています。このように、複数の変数を1つのクラスにまとめてreturnすることで、複数の戻り値を返す事ができます。

exitメソッドとの違い

ここでは、exitメソッドとreturn文の違いを解説します。メソッドの処理を終了させるにはreturn文を使いますが、プログラムの全体を終了させるにはexitメソッドを使います。return文で処理を終了させる場合には、finallyブロック内の処理が実行されます。

exitメソッドでプログラムを終了させる場合には、finallyブロック内の処理は実行されません。次のプログラムで確認してみましょう。

public class Main {
    public static void main(String[] args) {

        try {
            System.out.println("tryの処理");
            return;
        } catch (Exception e) {
            System.out.println("catchの処理");
        } finally {
            System.out.println("finallyの処理");
        }
    }
}

実行結果:

tryの処理
finallyの処理

このプログラムの実行結果から、return文ではfinallyブロック内の処理が実行されることが確認できました。exitメソッドの使い方はこちらの記事で詳しく解説しているので、ぜひ確認してください。

【Java入門】exitでプログラムを終了させる(returnとの違いも解説)
更新日 : 2018年5月10日

メソッドの使い方総まとめ

この記事では紹介しきれなかったメソッドのいろいろな使い方を次の記事にまとめているので、ぜひ参考にしてください!

まとめ

この記事ではメソッドの戻り値を使うreturn文について解説しました。戻り値を使うとメソッドの処理の結果を呼び出し元で利用できます。return文は1つの値しか返せませんが、1つのクラスに複数の値をまとめることで複数の値を返すことができます。

もし、メソッドの戻り値について忘れてしまったらこの記事を確認してくださいね!

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

中井

中井

フリーライター。
主に美容系、ライフスタイル系含めこれまでに500本以上執筆。
趣味はオンラインゲームにフリーソフトの情報収集。

プログラミンとの出会い
-----------------------------------------------------------------------------------------
PCとプログラミングは大学からです。
それまでは、PCは触ると壊れると思い込んでました。

大学の授業で面白そうな理由でJavaを専攻。
全然授業についていけず、後ろの席の子に課題をやってもらってました。

そんなプログラミング音痴な状態で社会人を迎え、先輩からVBAがオススメと言われVBAを職場の人から教えてもらい習得。
その後、自分の業務に携わるものおは全てVBAを組みました。

会社を退職後、再度Javaを勉強する機会に恵まれ、大学でわからなかったことが一気に理解できるように。
念願のAndroidアプリでTwitterのクライアントアプリを作れるまでになりました。
以後、文章の修行の傍らJavaの最新情報を追う日々が続いています。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説