以下が、return の記述例になります。
class 戻り値の型 メソッド名(){ 処理; return 戻り値; }
以下は、return 文を使って呼び出し元に制御を戻す簡単なプログラムの例です。
public class ReturnTest { public void returnTest(){ System.out.println("returnTestメソッドが呼ばれました。"); //returnで処理を呼び元に戻す return; } }
以下が上記の「ReturnTest」クラスを呼び出すメイン関数を持つクラスです。
public class MainTest { public static void main(String[] args){ ReturnTest rt = new ReturnTest(); //returnTestメソッドの呼び出し rt.returnTest(); System.out.println("制御が戻りました。"); } }
以下が実行結果です。
returnTestメソッドが呼ばれました。 制御が戻りました。
処理の制御を戻すには return 文の記述が必要ですが、return 文は省略することも出来ます。上記のプログラムの例では、return 文を記述してもしなくても実行結果は同じになります。一見使い道が無いように見えてしまう return 文ですが、以下のプログラムのように利用することで有効に利用することが出来ます。
public class ReturnTest { public void returnTest() { System.out.println("returnTestメソッドが呼ばれました。"); //String型の配列の作成 String str[] = new String[4]; str[0] = "TEST"; str[1] = "test"; str[2] = "Test"; str[3] = "TEst"; for (int i = 0; i < str.length; i++) { if (str[i].equals("Test")) { System.out.println(i + "番目で処理を戻します。"); //returnで処理を呼び元に戻す return; } else { System.out.println(i + "番目です。"); } } } }
以下が上記の「ReturnTest」クラスを呼び出すメイン関数を持つクラスです。
public class MainTest { public static void main(String[] args){ ReturnTest rt = new ReturnTest(); //returnTestメソッドの呼び出し rt.returnTest(); System.out.println("制御が戻りました。"); } }
以下が実行結果になります。
returnTestメソッドが呼ばれました。 0番目です。 1番目です。 2番目で処理を戻します。 制御が戻りました。
上記の実行結果をみてわかるように、配列の三番目で処理の制御を return 文で戻す記述しているので、for 文で繰り返し処理が行われている途中であっても繰り返し処理を抜けて制御が呼び出し元に戻ったことがわかります。
return 文を記述した先に処理を記述すると、到達不能コードとしてコンパイルエラーになってしまいます。以下はそのプログラムの例です。
public class ReturnTest { public void returnTest(){ System.out.println("returnTestメソッドが呼ばれました。"); //returnで処理を呼び元に戻す return ; System.out.println("到達不能コードです。"); } }
以上のように記述すると 7 行目でコンパイルエラーになってしまいます。
public class ReturnTest { public static void main(String[] args) { new ReturnTest(); } public ReturnTest() { System.out.println(this.intM()); System.out.println(this.stringM()); } //int型を返すメソッドの作成 public int intM() { int i = 10; //iの値を返します。 return i; } //String型を返すメソッドの作成 public String stringM() { String str = "ストリングの文字列が返りました。"; //strの値を返します。 return str; } }
以下が実行結果です。
10 ストリングの文字列が返りました。