Javaプログラマーが必ず理解しておかないといけない頻出機能の1つに「return文」が挙げられます。
本記事では、Java開発初心者の方向けに「return文」の使い方をサンプルコードを掲載しながらご紹介していきます。
目次
return文とは
return文は、「処理を中断して呼び出し元に返す」処理と「値を返す」処理を実施するJavaの命令文です。
処理を中断して呼び出し元に返す
return;
値を返す
return 返却値;
処理を中断して呼び出し元に返す
処理を中断して呼び出し元の返す記述法です。
クラス { mainメソッド { Aメソッド呼び出し } void Aメソッド { 処理1 if (条件式) { 処理2 } else { return; } 処理3 } }
「A」メソッドを呼び出し処理1の実行後、条件式が「true」の場合、処理2を実行した後、処理3が実行され「main」メソッドに戻ります。
一方で処理1の実行後、条件式が「false」の場合、処理2が実行されないのはもちろん、処理3も実行されず「main」メソッドに戻ります。
return文が実行された時点で呼び出し元である「main」メソッドに戻ることになるからです。
Javaの高単価フリーランス案件はこちら
値を返す
return文のもう1つの使い方として「値を返す」機能がありますが、厳密に言うと「処理を中断した上で値を返す」となります。
クラス { mainメソッド { 変数 = Aメソッド呼び出し System.out.println(変数); } 戻り値の型 Aメソッド { 処理1 if (条件式) { 処理2 } else { return "処理が中断されました。"; } 処理3 return "Aメソッドの処理は全て実行済みです。"; } }
このような記述をした場合、「A」メソッドの条件式が「true」の場合には処理1,2,3が全て実行された上で「main」メソッドの処理に戻り「Aメソッドの処理は全て実行済みです。」と出力されます。
一方で条件式が「false」の場合、処理1のみ実行された上で「main」メソッドの処理に戻り「処理が中断されました。」と出力されます。
気づかれた方もいらっしゃるかも知れませんが、値を返却する場合メソッド名の前に返却値の型を指定する必要があります。
return文を使用した各種Javaサンプル
では実際にreturn文を使用いた様々なJavaのサンプルコードを確認してみましょう。
voidメソッドで処理を中断する
import java.util.*; public class Main { public static void main(String[] args) { execute(true); execute(false); } private static void execute(Boolean sample) { if(sample) { System.out.println("条件式がtrueの場合の処理です。"); } else { System.out.println("条件式がfalseの場合の処理です。"); return; } System.out.println("処理が中断されなければ共通で出力される処理です。"); } }
実行結果
条件式がtrueの場合の処理です。 処理が中断されなければ共通で出力される処理です。 条件式がfalseの場合の処理です。
条件式がfalseの場合、処理が中断されていることをご確認頂けます。
クラスを指定して値を返却する
import java.util.*; public class Main { public static void main(String[] args) { String str1 = execute(true); System.out.println(str1); String str2 = execute(false); System.out.println(str2); } private static String execute(Boolean sample) { if(sample) { return "条件式がtrueの場合の処理です。"; } else { return "条件式がfalseの場合の処理です。"; } // System.out.println("処理が中断されなければ共通で出力される処理です。"); // この処理には到達出来ない。 } }
実行結果
条件式がtrueの場合の処理です。 条件式がfalseの場合の処理です。
処理を中断する際に使用した「void」メソッドのサンプルを、値を返却する用に変更してみました。
このように記述するとif文のどちら側の処理が実施された場合でも、return文が呼び出されているため、メソッドの最後に記述された共通の出力処理が実施されません。
Javaの高単価フリーランス案件はこちら
複数項目の返却には配列やリストなどを利用
ではどのように複数の値を返却するのかというと、配列やリストに格納することで複数の値をオブジェクトに設定して返却することが可能となります。
import java.util.*; public class Main { public static void main(String[] args) { ArrayList<String> strList1 = execute(true); for (String str: strList1) { System.out.println(str); } ArrayList<String> strList2 = execute(false); for (String str: strList2) { System.out.println(str); } } private static ArrayList execute(Boolean sample) { ArrayList<String> strArray = new ArrayList<>(); if(sample) { strArray.add("条件式がtrueの場合の処理です。"); } else { strArray.add("条件式がfalseの場合の処理です。"); return strArray; } strArray.add("処理が中断されなければ共通で出力される処理です。"); return strArray; } }
実行結果
条件式がtrueの場合の処理です。 処理が中断されなければ共通で出力される処理です。 条件式がfalseの場合の処理です。
returnとexitの違いに注意
returnと同じく処理を中断させる方法として「exit」メソッドが挙げられます。
ただし、「exit」メソッドでは、呼び出した時点でプログラム自体を終了する特徴があります。
exitメソッドのサンプル
voidで処理を中断するサンプルを「exit」に書き換えて実行順を変更してみます。
import java.util.*; public class Main { public static void main(String[] args) { execute(false); execute(true); } private static void execute(Boolean sample) { if(sample) { System.out.println("条件式がtrueの場合の処理です。"); } else { System.out.println("条件式がfalseの場合の処理です。"); System.exit(0); // 引数の0は正常終了で利用される } System.out.println("処理が中断されなければ共通で出力される処理です。"); } }
実行結果
条件式がfalseの場合の処理です。
まず「excute(false)」が実行され、else側の処理が呼び出されることで、コンソール出力が実行された後プログラムを終了しています。
2番目に実行される予定だった「execute(true)」の処理が実施されないため、サンプルのような出力結果となります。
さいごに: Javaプログラム開発ではreturn文は頻出処理の1つ
本記事では、Javaプログラムでのreturn文の使い方についてご紹介してきました。
条件によって処理を中断させたり、値を返却するような処理は様々な場面で必要となります。
Javaプログラム開発では必須処理の1つと言えますので、実際に利用してみながら理解を深めていきましょう。
Javaのフリーランス案件を覗いてみよう
Javaのフリーランス案件は豊富にあり、条件も高いものが多いです。Javaの実務経験が2年以上あればフリーランスになるのも可能です。経験が5年程あれば月単価70万円以上も可能です。Java案件のトレンドが気になる方は、Java案件の単価相場や募集トレンド
をご覧ください。
当メディアを運営するポテパンでJavaフリーランス案件のご紹介もやっておりますので、最新Java案件一覧も是非ご覧ください。
もし、RubyなどのWebエンジニアへの転職を考えている方は、転職に強いポテパンキャンプをご利用くださいませ。