見出し画像

break句とreturn句の違い vol.18

前回の続きの内容。

今回はbreak句とreturn句の違いについて述べていこうと思う。
while文のブロック後がどうなるのかに注目していただきたい。
まずはbreak句から。

1.breakの場合

public static void main(String[] args) {
       int i = 0;
       while (i < 3) {   ⇐ここがwhileの処理ブロック
                 System.out.println(i);
                 if (i == 1) {
                     break;
                 }
                 i++;
        } ⇐ここでwhile終了
       System.out.println("break pattern");
}

先ほどから使用しているこのwhile文のブロック外に
 System.out.println ("break pattern")を記述した。
コンソールにbreak patternが表示されるかどうか。

コンソールに表示してみよう。

0
1
break pattern

このように、while文が中断した後のwhile文のブロック外の処理が実行された。

2.returnの場合

public static void main(String[] args) {
       int i = 0;
       while (i < 3) {   ⇐ここがwhileの処理ブロック
                 System.out.println(i);
                 if (i == 1) {
                     return;
                 }
                 i++;
        } ⇐ここでwhile終了
       System.out.println("return pattern");
}

コンソールにreturn patternが表示されるかどうか。

コンソールに表示

0
1

while文の後の
System.out.println("return pattern");が実行されなかった。

breakの場合はbreakを囲っているwhile文やfor文の繰り返しが終了し、次の処理に行くのだが、
returnの場合は、メソッドごと終了させてしまうのだ。

下記breakのイメージ

画像1

下記returnのイメージ

画像2

中断の強制範囲が広い順で並べると

return > break > continue

のような順になる。

3.while文を2つ使った例

public static void main(String[] args) {
       int i = 0;
       int y = 0;
       while (i < 3) { ⇐一つ目のwhile文ブロック
                 System.out.println("i"+ i);
                 while (y < 3) {  ⇐二つ目のwhile文ブロック
                           if(y == 1) {
                              break;
                           }
                           System.out.println("y" + y);
                           y++;
                  }  ⇐二つ目のwhile文ブロック
                  i++;
         }  ⇐一つ目のwhile文ブロック
         System.out.println("break pattern");
}

コンソールに表示

i0
y0
i1
y0
i2
y0
break pattern

while (i < 3)のブロックの中に、while (y < 3)を書きその中にif文でyが1の時while (y < 3)の処理を中断させるようにしている。

その結果yが1になった時、breakが行われ
while (y < 3)の処理が中断される。
その結果yは0しか表示されていない。

その外にあるwhile (i < 3)は問題なく0.1.2が表示された。

このように、breakの直近のwhile文やfor文に、影響を及ぼしている。

先ほどはbreakだったが今回はreturnで書いてみよう。

public static void main(String[] args) {
       int i = 0;
       int y = 0;
       while (i < 3) { ⇐一つ目のwhile文ブロック
                 System.out.println("i"+ i);
                 while (y < 3) {  ⇐二つ目のwhile文ブロック
                           if(y == 1) {
                              return;
                           }
                           System.out.println("y" + y);
                           y++;
                  }  ⇐二つ目のwhile文ブロック
                  i++;
         }  ⇐一つ目のwhile文ブロック
         System.out.println("return pattern");
}

これがreturnであればこうなる。

コンソールに表示

i0
y0

先ほどの文がbreakに代わりreturnになった。

yが1になったときreturnが行われる。
1になりreturnが実行された。そしてメソッド内全ての処理が中断された。

このようにbreakは直近のブロックのみだが、returnはメソッドブロックごと終了させてしまう。

メソッドブロックはpublic static void main(String[] args) {}
この波カッコの範囲がメソッドブロックに当たる。

メソッドブロックの範囲内で処理がおこなわれるのが基本だ。

メソッドブロックについてはこのご説明する。

長くなりすぎたが以上。

次回はfor文での記述をする。復習がてらに見ていただきたい。

では、また次回
元体育会系文系エンジニア石黒




この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?