Javaのreturnを分かりやすく解説します!|returnのもう一つの使い方を知ろう

- システム
エンジニア - Javaのreturnは「処理中のものを中断して返す」のほかには、どのような意味があるのでしょうか。
- プロジェクト
マネージャー - もう一つの重要な役割として、「呼び出し側に値を返す」という意味もあります。
Javaのreturnとは?
returnとはリターンと読み、日本語で「返す」と訳されます。その通りにJavaでのreturnは返すという動作をします。また、Javaのreturnの返すには2通りの意味があり、処理を行っていたものを中断して返すという意味と、値を返すという意味の2つの役割を持っています。
この記事では、Javaのreturnについての使い方をサンプルで説明しながら解説しますので、Java初心者の方は是非ご覧ください。
classとmethodとreturn
Javaの文法の基本はclass(クラス)とmethod(メソッド)です。以下のサンプルのTestClassがクラス、testMethodとmainがメソッドです。このサンプルを実行するとまずmainメソッドが呼ばれて、その中でtestMethodが2回呼ばれます。
public class TestClass {
public static void testMethod(int val) {
if (val==0) {
System.out.println(“”returnで処理を返します。””);
return;
}
System.out.println(“”テストです。””);
}
public static void main(String[] args) {
testMethod(0);
testMethod(1);
}
}
returnで処理を返せる
testMethodを呼ぶ時にカッコで0と1を渡していますが、これはパラメータと言います。testMethodの(int val)がそのパラメータを受ける変数です。渡された値のvalの中身が0だった場合は、””returnで処理を返します。””と表示して、returnで返ります。その次の””テストです。””は表示されません。
このようにメソッドの処理を打ち切って、処理を返すのがreturnの役割なのです。上のJavaサンプルを実行すると以下のように表示されます。
returnで処理を返します。
テストです。
returnのもう一つの使い方
returnのもう一つの使い方を紹介します。以下のJavaサンプルをご覧ください。
public class TestClass {
public static int testMethod(int val) {
return val*10;
}
public static void main(String[] args) {
int ret = testMethod(5);
System.out.println(ret);
}
}
returnは値を返すことができる
上のJavaサンプルではtestMethodに5を渡して呼び出し、その結果をretに入れています。testMethod側ではパラメータのvalを10倍してreturnで返しています。void testMethodではなくint testMethodになっていることに注意してください。
このサンプルを実行すると以下のように表示されます。
50
このように、「return 値」で呼び出し側に値を返すことができ、これがreturnのもう一つの重要な役割です。
returnで配列を返す
Javaのreturnはintのような基本型だけでなく、配列も返すことができます。以下のJavaサンプルをご覧ください。
public static int[] testMethod(int val) {
int ary[] = new int[3];
ary[0] = val*2;
ary[1] = val*3;
ary[2] = val*4;
return ary;
}
public static void main(String[] args) {
int[] ret = testMethod(3);
System.out.println(ret[0]+”” “”+ret[1]+”” “”+ret[2]);
}
returnの参照返し
上のJavaサンプルではtestMethodに渡されたパラメータを計算して配列に入れ、returnで返しています。このやり方はreturnで配列の参照を返すと言います。以下の例は文字列の参照を返しています。
public static String testMethod(int val) {
return val+””を受け取って文字列を返します。””;
}
public static void main(String[] args) {
System.out.println(testMethod(8));
}
実行結果は以下になります。
8を受け取って文字列を返します。
returnの参照返しはインスタンスを返す
以下のJavaサンプルは、testMethodが渡されたパラメータの値を持つInteger型のインスタンスを返します。
public static Integer testMethod(int val) {
return Integer.valueOf(val);
}
public static void main(String[] args) {
Integer iObj = testMethod(12);
System.out.println(iObj.intValue()+””を受け取りました。””);
}
実行結果は以下になります。
12を受け取りました。
参照返しは深く考えなくて良い
参照返しの話が出てきてから、よくわからなくなってきた人もいるかもしれません。しかし気にする必要はないので、難しく考えないようにしましょう。
Javaのreturnはint型のような基本型だけでなく、配列や文字列、クラス型も返すことができるとだけ理解すればいいです。
難しいことを言うと、returnの参照返しはインスタンスのアドレスを返しているということなのですが、初心者の時点ではまだわからなくても問題ありません。
switch文のreturn
Javaにはswitch文という値によって処理を切り替える構文がありますが、returnを使うとbreakを省略できます。以下のサンプルをご覧ください。
public static void testMethod(int val) {
switch(val) {
case 0:
System.out.println(“”0が来たのでreturnします。””);
return;
default:
break;
}
}
このサンプルではパラメータが0だった場合、すぐreturnしてtestMethodから抜けます。breakは省略できるというより、省略しなければなりません。returnの後にbreakを記述すると「到達できないコード」という理由でエラーになります。
try~catch~finally内のreturn
Javaにはtry~catch~finallyという構文があります。この中でreturnを使うと少しおかしなことになるので注意が必要です。以下のサンプルを見てください。
public static int testMethod() {
try {
return 3;
} catch (Exception e){
} finally {
return 4;
}
}
public static void main(String[] args) {
System.out.println(testMethod());
}
finally節は必ず最優先される
上のサンプルの結果はどうなるのでしょうか。答えは、
4
と表示されます。tryでは3を返していますが、finallyは必ず実行されるというルールがあるのでreturn 4が優先されてしまうのです。
ただしこのサンプルは「finally block does not complete normally」とwarningが出ます。普通じゃない動作をすると警告してくれるのです。
- システム
エンジニア - Javaのreturnは難しいイメージでしたが、基本の二つの意味を理解していれば良いのですね。
- プロジェクト
マネージャー - 初心者のうちはJavaのreturnは「メソッドの処理を中断して戻る」と「値を返す」の二つの意味を理解していれば十分でしょう。
return文はJavaの基本
Javaのreturnについて解説しましたが、ご理解頂けましたでしょうか。
基本的なこと以外に変わったケースも紹介しましたが、returnはメソッドの処理を中断して戻ったり、値を返したりすることができるとだけ分かれば、今は十分でしょう。
この記事を参考にJavaのreturnの文法を自分なりに理解しながら、Javaのプログラム作りに役立ててください。
FEnetJava・Javaコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


Java新着案件New Job
-
官公庁向け業務システム開発/Java/東京都千代田区/【WEB面談可】/テレワーク
月給39万~44万円東京都千代田区(永田町駅) -
販売管理システム開発/Java/東京都中央区/【WEB面談可】/テレワーク
月給49万~55万円東京都中央区(京橋駅) -
生命保険会社向けシステム開発/Java/東京都千代田区/【WEB面談可】/テレワーク
月給42万~48万円東京都千代田区(大手町駅) -
社会保険システムのパッケージ開発/Java/東京都港区/【WEB面談可】/テレワーク
月給42万~48万円東京都港区(新橋駅) -
金融機関向けシステム更改/Java/東京都江東区/【WEB面談可】/テレワーク
月給46万~51万円東京都江東区(豊洲駅) -
大手通信会社者向けWebシステム改修/Java/東京都港区/【WEB面談可】/テレワーク
月給42万~48万円東京都港区(品川駅)