【Java】return文はどこに戻るのかを詳しく動作検証
この記事では、Javaのreturn文をはどこに戻るのかを詳しく動作検証しました。
Javaではメソッドを呼び出して、return文がメソッドの中で実行されるとそれ以降の処理を実行せず呼び出し元へ処理が移ります。
一方で、return文と同時にメソッドを呼び出すパターンもあり、どこに戻るのか整理していきます。
wk1(); System.out.println("最後"); public void wk1() { System.out.println("1番目"); wk2(); System.out.println("3番目"); return; } public static void wk2() { System.out.println("2番目"); return; } //実行結果 1番目 2番目 3番目 最後
returnで戻る制御は、呼び出し元の行に戻ります。
- まず、wk1メソッドを呼び出します。
- ”1番目”の文字を出力した後、wk2メソッドを呼び出します。
- ”2番目”の文字を出力した後、returnで制御を戻します。
- 戻し先は、直前の呼び出し元であるwk1メソッドです。次の処理は、wk2メソッドを呼び出した後の行から始まるため”3番目”の文字を出力します。
- returnでwk1メソッドの呼び出し元に戻り、”最後”の文字を出力します。
returnと同時にメソッドを呼び出す
returnと同時にメソッドを呼び出すパターンもあります。
正確には、メソッド呼出し後の結果をreturn文で返すといった形です。
String str = wk1(); System.out.println(str); System.out.println("最後"); public String wk1() { System.out.println("1番目"); return wk2(); } public String wk2() { System.out.println("2番目"); return "test"; } //実行結果 1番目 2番目 test 最後
- まず、wk1メソッドを呼び出します。
- ”1番目”の文字を出力した後、returnで制御を戻す前に、wk2メソッドを呼び出します。
- ”2番目”の文字を出力した後、returnで”test”の文字列を返します。
- 戻し先は、直前の呼び出し元であるwk1メソッドです。呼出し後にreturnしているため返ってきた文字列をさらに呼び出し元に戻します。
- ”test”の文字列を出力したあと”最後”の文字を出力します。
Javaの記事の一覧はJava にまとめてあります