JAVA/JAVA

Java | 탈출문 Break, Continue

pathas 2020. 1. 17. 17:09

탈출문

제어문(대부분 반복문) 중에서 특정 조건에 따라
더 이상 코드를 실행하지 않고 중간에 빠져나가는 경우에 사용하는 구문


Break문

반복문 내의 코드가 실행되다가 break를 만나면
코드의 실행을 중지하고 반복문 밖으로 빠져나감

유형1_레이블이 없는 Break문

조건문에 따라 break문을 만나게 되면
break문과 가장 가까운 루프에서 탈출함

일반적인 break문이며 대부분의 경우에 해당함

public class BreakTest {
    public static void main(String[] args) {
        for (int a = 0; a < 3; a++) {
            for (int b = 0; b < 6; b++) {

            // b가 2가 되었을 때 해당 루프에서 탈출하도록 함
            if(b==2) break;
                System.out.println("a: " + a + ", b: " + b);
            }
            System.out.println("======");
             /*
             a: 0, b: 0
             a: 0, b: 1
             ==========
             a: 1, b: 0
             a: 1, b: 1
             ==========
             a: 2, b: 0
             a: 2, b: 1
             ==========
             */
        }
    }
}

※ b가 2가 되면 내부 for문에서 바로 탈출하기 때문에 a값은 0~2가 출력된 반면 b의 값은 0, 1까지만 출력됨


유형2_레이블이 있는 Break문

break문으로 루프를 탈출할 때 레이블을 사용하면 원하는 위치까지 벗어날 수 있음

형식) break 레이블명;
빠져나가길 원하는 for문의 바로 위에 레이블명:

public class BreakTest2 {
    public static void main(String[] args) {

        A: // 레이블명: 탈출하고 싶은 for문의 바로 위에 레이블 작성
        for (int a = 0; a < 3; a++) {
            for (int b = 0; b < 6; b++) {
            if(b==2) break A; // break 레이블명;
                System.out.println("a: " + a + ", b: " + b);
            }
            System.out.println("======");
		 /*
		a: 0, b: 0
		a: 0, b: 1
		*/
        }
    }
}

※ b의 값이 2가 되는 순간 바깥쪽 for문 밖으로 탈출하기 때문에 a: 0, b: 1 이후의 값은 출력되지 않음


Continue문

skip문이라고도 하며, 특정 조건에 만족하는 continue문을 만나게 되면
continue문 바로 아래의 문장을 수행하지 않고 반복문의 종류에 따라 정해진 위치로 이동

while, do~while문: 조건식으로 이동
for 문: 증감식으로 이동

가장 가까운 루프에 적용됨


사용례

public class ConTest {
    public static void main(String[] args) {
        for (int a = 0; a < 2; a++) {
            for (int b = 0; b < 6; b++) {
                // b가 짝수일 때 continue 바로 아래의 코드를 실행하지 않고 증감식으로 넘어감
                if (b % 2 == 0)
                    continue;
                System.out.println("a: " + a + ", b: " + b);
            }
            System.out.println("======");
        }
         /*
         a: 0, b: 1
         a: 0, b: 3
         a: 0, b: 5
         ==========
         a: 1, b: 1
         a: 1, b: 3
         a: 1, b: 5
         ==========
         */
    }
}

※ continue문도 break문처럼 레이블을 사용할 수는 있지만 잘 사용하지는 않음


반복문에서 빠져나가야 하거나 특정 조건 아래의 코드를 실행하지 않고 넘어갈 때 사용하는

break문과 continue문에 대해 알아보았습니다.

레이블을 사용하면 break로 빠져나갈 수 있는 for문을 지정할 수 있기 때문에
현재 for문의 가장 바깥 for문으로 탈출하거나 할 때 사용할 수 있겠습니다.