반복문 블록에 이름을 붙이는 기능이다.
이 라벨을 활용해 중첩된 반복문 안에서 특정 시점에 한 번에 바깥 루프까지 탈출할 수 있도록 한다.
라벨이름:
for (조건1) {
for (조건2) {
if (조건) {
break 라벨이름; // 바깥 루프까지 탈출
}
}
}
중첩 반복문에서는 break를 쓰면 안쪽 반복문만 종료된다.
하지만 특정 조건을 만나면 모든 반복을 끝내가 바깥까지 빠져냐가야 할 때가 있다.
이럴 때 break만으로는 부족하고 break 라벨명이 효과적이다.
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (j == 1) break;
System.out.println("i=" + i + ", j=" + j);
}
}
출력은
i=0, j=0
i=1, j=0
i=2, j=0
다음과 같이 이뤄진다.
이때 break outer; 만 사용해 한 번에 탈출할 수 있다.
outer:
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (j == 1) break outer;
System.out.println("i=" + i + ", j=" + j);
}
}
그럼 출력은 i=0, j=0으로 i 루프까지 한 번에 탈출할 수 있다.
라벨 이름은 자유롭게 정할 수 있음 (outer, loop, exitPoint 등)
break 라벨명; 뿐만 아니라 continue 라벨명; 도 지원함
꼭 중첩 루프가 있을 때만 의미 있음. 단일 루프에서는 의미 없음.