Javaにおけるbreak文の使い方

Javaのbreakとは、繰り返し(for、while、do while)や条件分岐(switch)ブロックから抜け出すための制御文です。この記事ではbreakの使い方をご紹介します。

do

Javaのdo文でbreakを使う例を次に示す。

public class Example1 {
  public static void main(String[] args) {
    int i = 0;
    do {
      if (i >= args.length) {
        break;
      }
      System.out.println(args[i]);
      i++;
    } while (true);
  }
}

上記のJavaプログラムを実行した結果を次に示す。

$ java Example1 foo bar baz
foo
bar
baz

for

Javaのfor文でbreakを使う例を次に示す。

public class Example2 {
  public static void main(String[] args) {
    for (int i = 0; ; i++) {
      if (i >= args.length) {
        break;
      }
      System.out.println(args[i]);
    }
  }
}

上記のJavaプログラムを実行した結果を次に示す。

$ java Example2 foo bar baz
foo
bar
baz

while

Javaのwhile文でbreakを使う例を次に示す。

public class Example3 {
  public static void main(String[] args) {
    int i = 0;
    while (true) {
      if (i >= args.length) {
        break;
      }
      System.out.println(args[i]);
      i++;
    }
  }
}

上記のJavaプログラムを実行した結果を次に示す。

$ java Example3 foo bar baz
foo
bar
baz

switch

int i = 0;
switch (i) {
  case 0:
    break;
  default:
    break;
}

ネスト

Javaにはラベル無しのbreak文とラベル有りのbreak文がある。

ラベル無しのbreakは、break文を含むもっとも内側の制御文(for、while、do while、switch)を抜け出して終了する。

public class Example {
  public static void main(String[] args) {
    int i, j = 0;
    for (i = 0; i < 10; i++) {
      for (j = 0; j < 10; j++) {
        if (5 == j) {
          break;
        }
      }
    }
    System.out.println("i = " + i + ", j = " + j);
  }
}

上記プログラムの実行結果を示す。

i = 10, j = 5

ラベル

for、while及びdoのループ・ブロックにはラベルを付けることができる。ラベルとはループ・ブロックを一意に識別するための識別子である。

ラベルを付けたfor文の例を次に示す。

label: for (int i = 0; i < 10; i++) {
  // do something
}

break文にはラベルを指定することができる。

break label;

ラベルを指定したbreak文は、最も内側のループを抜けるのではなく、指定したラベルを持つループを抜ける。

public class Example {
  public static void main(String[] args) {
    outside: for (int i = 0; i < 10; i++) {
      for (int j = 0; j < 10; j++) {
        if (5 == j) {
          break outside;
        }
      }
    }
    System.out.println("i = " + i + ", j = " + j);
  }
}

上記プログラムの実行結果を示す。

i = 0, j = 5

continueとの違い

breakは繰返し処理を終了するが、continueは次の繰り返し処理へスキップする。

breakとcontinue
Figure 1. breakとcontinue