break 문의 탈출 범위는 while, for, switch, do while 이다. 아래 코드를 보자

 

		for (int b = 0; b < 200; b++) {
			for (int i = 0; i < 10; i++) {
				if (i == 5) {
					System.out.println("break 실행");
					break;
				}
				System.out.println("i = " + i);
			}
			System.out.println("b = " + b);
		}

이 코드를 실행해보자. 착각했던것이 i 가 5일때 if 안의 break 문으로 인해 if 만 탈출하는걸로 착각하였다 아니다. break 문이 있으면 무조건 if 밖의 while, for, switch, do while 을 기준으로 가장 가까운 반복문의 탈출을 시도한다. 그러나 탈출의 한계는 반복문 1단계 뿐이다. 위 코드와 같이 이중 for 문일경우 가장 바깥쪽의 for문에는 영향을 받지 않는다.

 

 

 그렇다면 이중 반복문을 완전히 빠져나가고 싶다면 어떻게 할까? 아니면 n의 반복문을 빠져나가고 싶다면?

		outerLoop :
		for (int b = 0; b < 200; b++) {
			for (int i = 0; i < 10; i++) {
				if (i == 5) {
					System.out.println("break 실행");
					break outerLoop;
				} 
				System.out.println("i = " + i);
			}
			System.out.println("b = " + b);
		}

위의 코드와 같이 빠져 나갈반복문의 윗쪽에 outerLoop : 명시해주고 break outerLoop; 라고 써준다. 그리하면 break outerLoop; 를 만나고 outerLoop : 아랫쪽에 있는 반복문을 완전히 빠져 나오게 된다. 즉 무시 되어진다. 기존 C언어에서 goto 와 유사하다. goto 문은 권장되어지지 않는 문이다.

 

필요에 의해 outerLoop 를 쓰겠지만. 권장되어지진 않는다