for 반복 제어문
for 문의 구성 (실행 순서 : 초기식 - 조건식(true) - 실행 구문 - 증감식 - 조건식 - 실행 구문 - 증감식 ... 조건식(false) - 종료) |
for(초기식; 조건식; 증감식) { 실행 구문; // 조건식이 true인 동안 실행 } |
초기식은 for 문이 시작될 때 딱 한 번 실행되고 다시는 실행되지 않는다. 따라서 for 문 안에서만 사용할 변수는 주로 초기식에서 초기화한다. 조건식은 실행 구문으로 들아가기 위한 유일한 출입구로, 이 조건식의 결과가 true가 나오는 동안은 실행 구문을 계속 반복한다. 만일 조건식이 false가 나오면 더 이상 반복을 수행하지 않고 for 문을 빠져나간다. 즉, for문이 끝나는 위치는 닫힌 중괄호가 아니라 조건식이다. 증감식은 for 문의 실행 구문이 모두 수행된 후 닫힌 중괄호를 만나면 다음 번 반복을 위해 다시 이동하는 위치로 매회 반복이 수행될 때 마다 호출된다.
초기식에 포함될 변수는 for 문 내외에서 선언 가능한데 for 문 이전에 변수를 선언하면 for문이 끝나도 활용할 수 있다. 반대로 초기식에서 선언할 경우 for 문 안에서만 유효하다. 조건식을 비워두워 무한 루프로 활용할 수도 있다. 대부분 break 키워드로 조건을 만족했을 때 벗어나도록 한다.
while 반복 제어문
while 문의 구성 (실행 순서 : 조건식(true) - 실행 구문 - 조건식 - 실행 구문 ... 조건식(false) - 종료) |
초기식; // 필수는 아니지만 대부분 사용 while(조건식) { // 필수, 생략 불가능 실행 구문; // 조건식이 true인 동안 실행 증감식; // 필수는 아니지만 대부분 사용 } |
for문과 하는 일은 같고, 형식이 조금 다르다. 초기식은 while 문 실행 이전에 정의 되어야 하고, 증감식은 중괄호 안에 있어야 for문과 동일한 수행을 한다. 또한, for 문과 달리 조건식을 생략할 수 없다. 만약 초기식을 중괄호 안에 넣으면 매 반복마다 초기화돼 무한 루프에 빠지게 된다. 일반적으로 while 문은 반복 횟수를 정하지 않고 특정 조건까지 반복하고자 할 때 주로 사용한다.
do-while 반복 제어문
while 문과 매우 유사하며, 조건식의 검사와 반복 실행의 순서에만 차이가 있다.
do-while 문의 구성 (실행 순서 : 실행 구문 - 조건식(true) - 실행 구문 ... 조건식(false) - 종료) |
초기식; // 필수는 아니지만 대부분 사용 do { // 필수, 생략 불가능 실행 구문; // 최초 1회는 무조건 실행 증감식; // 필수는 아니지만 대부분 사용 } while(조건식); // 문법 구조상 중괄호가 없으므로 세미콜론(;)으로 끝남 |
마지막이 중괄호로 끝나지 않으므로 제어문들 중에서 유일하게 세미콜론(;)을 붙여야 한다. 일단 실행한 후 조건식을 검사하므로 최소 반복 횟수가 1이다. 그렇다고 해서 while 문 보다 1회 더 많이 반복하는 것은 아니다. while 문에서 반복 횟수가 0번일 때만 do-while이 1번으로 더 많은 것이고, while 문에서 1번 이상일 경우 do-while 문도 반복 횟수는 같다.
제어문의 중복
각 제어문 내부에는 또 다른 제어문을 포함할 수 있다. 예를 들어 if 문 내에 if 문, switch 문 내부에 for 문, for 문 내부에 for 문 등 제어문을 얼마든지 중복해 사용할 수 있다. 물론, 3중, 4중도 문제없다.
break 제어 키워드
break는 if 문을 제외한 가장 가까운 중괄호를 탈출하는 제어 키워드다. 일반적으로 break는 반복문에서 특정 조건을 만족할 때 반복문을 탈출하는 데 사용한다. 만약 이중으로 중복된 for문을 탈출하고자 한다면 break는 가장 가까운 중괄호 하나만 탈출 가능하니 바깥쪽 for문의 조건식이 false가 되도록 초기식에 있는 변숫값을 탈출하기 전에 바꿔주면 된다. 자바에선 break + Lable(레이블) 문법으로 break 다음에 레이블을 지정하면 한 번에 여러 개의 반복문을 탈출할 수 있다. 레이블명은 개발자가 임의로 지을 수 있으며 레이블 다음에는 반드시 콜론을 표시해야 한다. 정리하면, 'break lable;'을 만나면 'lable:'으로 점프하는 방식이다.
continue 제어 키워드
continue는 반복 제어문의 닫힌 중괄호 역할을 하는 제어 키워드다. 'continue;'를 만나면 아직 실행할 코드가 남았어도 다음 반복을 위해 증감식으로 넘어간다. continue도 continue + Lable 문법을 사용할 수 있다.
break, continue + Lable 예제 |
gate: for (int i=0; i<5; i++) { for (int j=0; j<5; j++ ) { if(j==3) continue gate; // continue 또는 break } System.out.println(i + ", " + j); // (0, 0), (0, 1), (0, 2), (1, 0), (1, 2), ... , (4, 0), (4, 1), (4, 2) } |
'development > Java' 카테고리의 다른 글
JAVA 공부 해볼까 (9) (0) | 2021.12.16 |
---|---|
JAVA 공부 해볼까 (8) (4) | 2021.12.14 |
JAVA 공부 해볼까 (6) (0) | 2021.12.11 |
JAVA 공부 해볼까 (5) (0) | 2021.12.10 |
JAVA 공부 해볼까 (4) (4) | 2021.12.09 |