[java入門] 戻り値がvoidのメソッドでreturnする

voidは戻り値なしのメソッドで使う

Javaのvoidはメソッドで戻り値がない場合に使うというイメージが強いと思います。

こんな感じです。

メソッド①は戻り値がなく何も特にreturnしていません。

一方、戻り値(int)があるメソッド②では、

この部分でintをreturnしています。

[java入門]メソッドにあるvoidの意味に詳しい使い方書いているのでこちらも参考にしてみてください。

本題: voidでreturn; を使う

Javaではvoidを使った戻り値なしのメソッドでもreturnを使うことができます。

使い方は、

return;

です。

このreturn; は、上で見たような、

return + 戻り値 とは意味が違います。

return; のようにreturn単体で使うと

break文ようなブロックを抜けるような処理になります。

numが4の時、return; が実行されており、for文を抜けて処理が中断されていることがわかるかと思います。

break文との違いは、break文は1ブロック(例えばforループ、whileループなど)抜けるのに対して、returnは全てのブロック処理を抜ける点です。

例えば、

このプログラムでは、while文の繰り返しの中にさらに、for文の繰り返しが行われていて、for文の中でbreakが実行されています。breakによりfor文の外に1回出ています。for文の外はwhile文でwhile文はまだ繰り返されているので、再びfor文に戻っています。

少しややこしいですが、ポイントは、

break文は、処理を1ブロック外に出るということです。

この場合はfor文から出ています。

一方、returnは処理を1ブロックではなく全て終了します。

breakとreturnを変えただけです。

結果が違います。numが4の時returnが行われ、全てのブロック(forとwhile)の外に出て処理を中断しています。

これがbreakとreturnの違いです。

補足ですが、breakにラベルを付けるとreturnと同じように全てのブロックから抜けれるようになります。詳しくは[java入門]while文でbreakを使うを参考にしてみてください。

まとめ

戻り値がvoidのメソッドでreturnすると全てのブロックから抜け、処理を中断することができます。似たようなものにbreakがありますがやや違いがあります。

以上です。

エンジニアの皆さん! ”正社員”でフリーランスはじめませんか?

参考:

【戻り値がvoidのメソッドを途中で終了させる】