자바 반복문
IT위키
더 많은 작업
자바 반복문은 자바에서 조건이 참인 동안 같은 문장을 되풀이해 실행하는 제어문으로, for, while, do-while, 그리고 배열·컬렉션을 차례로 도는 향상된 for 가 있다.
자바의 반복문 문법은 C 언어 반복문과 거의 같다. 다른 점은 조건식이 반드시 boolean 이어야 한다는 것(정수 0·1 을 조건으로 쓸 수 없다)과, 배열·컬렉션의 원소를 하나씩 꺼내는 향상된 for 문이 있다는 것이다. 실행 결과를 묻는 문제는 반복 변수와 누적 변수의 값을 회차마다 표로 적어 가면 틀리지 않는다.
| 문 | 조건 검사 시점 | 최소 실행 횟수 | 주로 쓰는 곳 |
|---|---|---|---|
for |
반복 전 | 0회 | 반복 횟수가 정해져 있을 때 |
while |
반복 전 | 0회 | 조건으로 끝날 때 |
do-while |
반복 후 | 1회 | 일단 한 번은 실행해야 할 때 |
향상된 for |
원소가 남았는지 | 0회 | 배열·컬렉션 전체를 차례로 읽을 때 |
for (초기식; 조건식; 증감식) {
문장;
}
- 초기식을 한 번 실행하고, 조건식이 참이면 문장을 실행한 뒤 증감식을 실행하는 과정을 되풀이한다
- 초기식과 증감식에는 쉼표로 여러 식을 나열할 수 있다.
for (j = 0, i = 0; i <= 5; i++)는 j 와 i 를 둘 다 0 으로 놓고 시작한다 - 세 식은 모두 생략할 수 있다.
for (;;)는 무한 반복이다
while (조건식) { 문장; }
do { 문장; } while (조건식);
do-while 은 문장을 먼저 실행하고 조건을 검사하므로 조건이 처음부터 거짓이어도 한 번은 실행된다.
int[] a = {3, 1, 4};
for (int x : a) {
System.out.print(x); // 314
}
인덱스 없이 원소를 차례로 꺼낸다. 꺼낸 변수 x 에 값을 대입해도 배열 원소는 바뀌지 않는다.
break: 가장 안쪽 반복문을 즉시 빠져나간다continue: 이번 회차의 남은 문장을 건너뛰고 다음 조건 검사(for 는 증감식)로 간다- 이름표를 붙이면(
outer: for (...))break outer;로 바깥 반복문까지 한 번에 빠져나갈 수 있다
System.out.print(x): x 만 출력하고 줄을 바꾸지 않는다. 사이에 공백도 넣지 않는다System.out.println(x): x 를 출력한 뒤 줄을 바꾼다System.out.printf("%d ", x): 형식 문자열대로 출력한다. 공백은 형식 문자열에 쓴 만큼만 나온다
int i, j;
for (j = 0, i = 0; i <= 5; i++) {
j += i;
System.out.print(i);
if (i == 5) {
System.out.print("=");
System.out.print(j);
} else {
System.out.print("+");
}
}
| i | j += i 후 j | 이번 회차 출력 |
|---|---|---|
| 0 | 0 | 0+ |
| 1 | 1 | 1+ |
| 2 | 3 | 2+ |
| 3 | 6 | 3+ |
| 4 | 10 | 4+ |
| 5 | 15 | 5=15 |
i 가 6 이 되면 조건 i <= 5 가 거짓이라 끝난다. print 는 공백과 줄바꿈을 넣지 않으므로 출력은 0+1+2+3+4+5=15 한 줄이다. "0 + 1 + 2 …" 처럼 공백을 넣어 쓰면 실제 출력과 다르다.