이번 포스팅에서는 자바(Java)의 반복문(iteration statements)에 대하여 공부를 해보고자 한다.
반복문이란
반복문이란 프로그램 내에서 똑같은 명령을 일정 횟수만큼 반복하여 수행하도록 제어하는 명령문이다.
프로그램이 처리하는 대부분의 코드는 반복적인 형태가 많으므로, 가장 많이 사용되는 제어문 중 하나다.
자바에서 사용되는 대표적인 반복문의 형태
- while 문
- do - while 문
- for 문
세 가지 모두 반복 수행을 한다는 것은 동일하지만, 사용 방법에 조금씩 차이가 있다.
while 문
while 문은 조건식이 참인 동안 수행문을 반복해서 수행한다.
while 문을 사용하는 형태
while(조건식) { // 조건식이 참인 동안 반복 수행
수행문1;
...
}
수행문2;
...
- 어떠한 조건식을 만족하는 동안 중괄호 { } 안의 수행문을 반복해서 처리한다.
- 조건문과 마찬가지로 수행문이 하나인 경우에는 { }를 사용하지 않을 수 있다.
while문이 무한 반복되는 경우
while 문은 특정 조건을 만족하는 동안 반복되는 명령을 수행하고, 그렇지 않으면 수행을 중단한 후 while 문을 빠져나온다.
하지만 무한 반복해야 하는 경우 다음과 같이 사용한다.
while(True) {
...
}
- 조건이 항상 '참'이 되어 '무한 반복'한다.
do - while 문
while 문은 조건을 먼저 검사하기 때문에 조건식에 맞지 않으면 반복 수행이 한 번도 일어나지 않는다.
하지만 do - while 문은 { } 안의 문장을 무조건 한 번 수행한 후에 조건식을 검사한다.
즉, 조건이 만족하는지 여부를 마지막에 검사하는 것이다.
따라서 중괄호 안의 문장을 반드시 한 번 이상 수행해야 할 때 while 문 대신 do - while 문을 사용한다.
do - while 문을 사용하는 형태
do {
수행문1;
...
} while(조건식);
수행문2;
...
for 문
for 문은 가장 많이 사용하는 반복문이다.
for 문은 while 문이나 do - while 문보다 구조가 조금 더 복잡하다.
반복문을 구현하는 데 필요한 여러 요소(변수의 초기화식, 조건식, 증감식)를 함께 작성하기 때문이다.
for 문을 사용하는 형태
for (초기화식; 조건식; 증감식) {
수행문;
}
- 초기화식은 for 문이 시작할 때 딱 한 번만 수행하며 사용할 변수를 초기화한다.
- 조건식에서 언제까지 반복 수행할 것인지 구현한다.
- 증감식에서 반복 횟수나 for 문에 사용하는 변수 값을 1만큼 늘리거나 줄인다.
for 문의 수행 순서 예시
- 처음 for 문이 시작할 때 출력할 숫자인 num을 1로 초기화한다.
- 조건식 num <= 5를 검사했을 때 num은 1이므로 참이다.
- 조건식이 참이기 때문에 for 문의 System.out.println(num);을 수행하고 1을 출력한다
- 증감식 num++를 수행하여 num 값은 3이 된다.
조건식 num <= 5를 검사했을 때 num 값은 6이므로 거짓이다. → for 문이 끝난다.
for 문을 자주 사용하는 이유
for 문을 자주 사용하는 이유는 반복 횟수를 관리할 수 있기 때문이다.
물론 while 문에서도 반복 횟수에 따라 구현할 수 있지만 차이가 있다.
- while 문으로 작성한 코드는 변수 num의 초기화와 조건 비교, 증감식을 따로 구현한다.
- for 문을 사용하여 구현하면 초기화, 조건 비교, 증감식을 한 줄에 쓸 수 있을뿐더러 가독성도 좋다.
또한 for 문은 배열과 함께 자주 사용한다.
for 문 요소 생략하기
for 문을 구성하는 요소는 코드가 중복되거나 논리 흐름상 사용할 필요가 없을 때 생략할 수 있다.
초기화식 생략
이미 이전에 다른 곳에서 변수가 초기화되어 중복으로 초기화할 필요가 없을 때 초기화 부분을 생략할 수 있다.
조건식 생략
어떤 연산 결과 값이 나왔을 때 바로 for 문의 수행을 멈추려면 조건식을 생략하고 for 문 안에 if 문을 사용하면 된다.
증감식 생략
증감식의 연산이 복잡하거나 다른 변수의 연산 결과 값에 좌우된다면 증감식을 생략하고 for 문안에 쓸 수 있다.
요소 모두 생략
모든 요소를 생략하고 무한 반복하는 경우에 사용한다.
중첩된 반복문
반복문 안에 또 다른 반복문을 중첩해서 사용하는 경우가 종종 있다.
반복문을 중첩해서 사용할 때 외부 for 문과 내부 for 문이 어떤 순서로 실행되는지 잘 이해해야 한다.
중첩 반복문 예시
for(i = 2; i <= 9; i++) { //2부터 9까지 반복하는 외부 반복문
for(j = 1; j <= 9; j++) { //1~9를 곱하는 내부 반복문
System.out.println(i + "X" + j + "=" + i * j);
}
System.out.println(); //한 줄 띄워서 출력
}
- 중첩 반복문을 사용할 때는 어떤 반복문을 먼저 수행해야 하는지 그리고 내부 반복문을 수행하기 전에 초기화해야 할 값을 잘 초기화했는지를 살펴야 한다.
- for 문 외의 다른 반복문도 중첩해서 사용할 수 있다.
내부 반복을 수행하기 전에는 곱하는 수를 반드시 초기화해야 한다.
continue 문과 break 문
continue 문은 반복문과 같이 사용된다.
반복문 안에서 continue 문을 만나면 이후의 문장은 수행하지 않고 for문의 처음으로 돌아가 증감식을 수행한다.
conitnue 문은 반복문을 계속 수행하는데, 특정 조건에서는 수행하지 않고 건너뛰어야 할 때 사용한다.
break 문은 조건문에서와 마찬가지로 사용 시 그 지점에서 더 이상 수행문을 반복하지 않고 반복문을 빠져나온다.
즉, 프로그램 실행 중에 반복문을 중단하려면 break 문을 사용해야 정확한 결과 값을 얻을 수 있다.
break 문의 위치
반복문이 중첩된 경우에 break 문을 사용하면 모든 반복문을 빠져나오는 것이 아니고 break 문을 감싸고 있는 반복문만 빠져나온다.
'Back-End > Java' 카테고리의 다른 글
[Java] 메서드(Method) (0) | 2023.01.31 |
---|---|
[Java] 객체 지향 프로그래밍과 클래스 (0) | 2023.01.30 |
[Java] 조건문 (0) | 2023.01.29 |
[Java] 비트 연산자 (2) | 2023.01.28 |
[Java] 기본 연산자 (0) | 2023.01.28 |