アクセス修飾子 戻り値の型 メソッド名(){ 処理; break; }
以下は、break 文を使って処理を途中で強制的に終了させる簡単なプログラムの例です。
public class BreakTest { public void breakTest() { System.out.println("breakTestメソッドがよばれました。"); for (int i = 1; i < 10; i++) { System.out.println(i + "番目です。"); if (i == 4) { System.out.println(i + "番目で処理を抜けました。"); break; } } } }
以下が、上記の「BreakTest」クラスを呼び出すメイン関数を持つクラスです。
public class MainTest { public static void main(String[] args) { //BreakTestクラスのインスタンス作成 BreakTest bt = new BreakTest(); bt.breakTest(); System.out.println("処理が戻りました。"); } }
以下が実行結果です。
breakTestメソッドがよばれました。 1番目です。 2番目です。 3番目です。 4番目です。 4番目で処理を抜けました。 処理が戻りました。以上の実行結果をみてわかる通り、 「for 文」の処理の中で本来なら「i」の値が 10 未満の間繰り返しますが、途中で記述されている「if 文」の処理の中で「i」の値が 4 であったなら break 文で強制的に処理を終了しているのがわかります。
break 文は swith 文の処理の中に記述することによって有効に利用することが出来ます。以下がそのプログラムの例です。
public class BreakTest { public void breakTest() { System.out.println("breakTestメソッドがよばれました。"); for (int i = 1; i <= 3; i++) { System.out.println("----" + i + "番目です。----"); switch (i) { case 1 : System.out.println("case1通過"); case 2 : System.out.println("case2通過"); break; case 3 : System.out.println("case3通過"); } } } }
以下が上記の「」クラスを呼び出すメイン関数を持つクラスです。
public class MainTest { public static void main(String[] args) { //BreakTestクラスのインスタンス作成 BreakTest bt = new BreakTest(); bt.breakTest(); System.out.println("処理が戻りました。"); } }
以下が実行結果になります。
breakTestメソッドがよばれました。 ----1番目です。---- case1通過 case2通過 ----2番目です。---- case2通過 ----3番目です。---- case3通過 処理が戻りました。
本来、bereak 文の記述が「case2」内で行われていなかった場合には、「i」の値が「1」、「2」であった時も「case3」の処理を行ってしまいますが、break 文の記述により、以上の実行結果をみてもわかる通り、 「case2」の処理の途中で break 文によって強制的に処理が終了しているのがわかります。
break 文を記述した先に処理を記述すると、到達不能コードとしてコンパイルエラーになってしまいます。以下はそのプログラムの例です。
public class BreakTest { public void breakTest() { System.out.println("breakTestメソッドがよばれました。"); for (int i = 1; i < 10; i++) { System.out.println(i + "番目です。"); if (i == 4) { System.out.println(i + "番目で処理を抜けました。"); break; System.out.println("達成不能コードです。"); } } } }以上のように記述してしまうと、10 行目でコンパイルエラーになってしまいます。