Java 제어문(Control statement)의 반복문(Loop Control)
반복문(Loop Control)
자바에는 for, while, do-while문과 J2EE 5.0에서 추가된 for~each 문이 있다. 반복문들은 지정된 문장을 조건이 만족할 때까지 반복한다. 조건을 지정하는 방법에 따라 for, while, do-while, for~each문이 구분되어 사용된다. 반복될 문장이 한 문장일 경우에는 블럭으로 지정하지 않아도 되지만, 한 문장 이상일 경우에는 중괄호({ })를 사용하여 블록으로 지정해야 한다.
for문
for문은 주어진 초기값을 시작으로 조건을 만족하는 동안 for 블록을 반복 실행하는 명령문이다.
for (초기값; 조건식; 증감값) {
반복 실행 문장;
}
for문이 시작되면, 초기값 부분이 한 번만 실행된다. 다음 조건식이 실행되는데, 이 조건식은 반드시 부울 식이어야 한다. 이 조건식이 false가 되면 반복문은 종료된다. 증감값에는 반복 제어 변수를 증가시키거나 감소시키는 식이 온다. 처음 조건식이 실행된 다음에 실행 문장이 실행되고, 증감값이 실행된 다음에 조건식을 실행하고 실행 문장이 실행되는 반복을 하게 된다.
다음은 1부터 100까지 합을 구하는 예제이다.
package com.devkuma.tutorial.control.statement;
public class For1 {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
System.out.println("sum=" + sum);
}
}
for문의 초기값, 조건식, 증감값에서 하나 이상의 문장을 나열하고 싶은 경우에는 콤마(,)를 사용하여 선언할 수 있다.
아래 두 예제는 동일한 결과를 출력한다.
package com.devkuma.tutorial.control.statement;
public class For2 {
public static void main(String[] args) {
int a, b;
b = 4;
for (a = 1; a < b; a++) {
System.out.println("a=" + a + ", b=" + b);
b--;
}
}
}
package com.devkuma.tutorial.control.statement;
public class For3 {
public static void main(String[] args) {
int a, b;
for (a = 1, b = 4; a < b; a++, b--) {
System.out.println("a=" + a + ", b=" + b);
}
}
}
for ~ each 문
JDK 1.5에서 for문의 또 다른 형식인 for~each 문장이 추가되었다.
for~each문은 컬렉션 타입(collection type)의 데이터에서 데이터가 존재하는 횟수만큼 반복적으로 실행하는 명령문이다.
for (변수 : 컬렉션) {
반복 실행 문장;
}
아래 예제는 배열과 컬렉션 타입의 데이터를 사용한 예제이다.
package com.devkuma.tutorial.control.statement;
import java.util.ArrayList;
import java.util.List;
public class ForEach {
public static void main(String[] args) {
String array[] = { "A", "B", "C" };
for (String a : array) {
System.out.println("a=" + a);
}
List<String> list = new ArrayList<String>();
list.add("A");
list.add("B");
list.add("C");
for (String l : list) {
System.out.println("l=" + l);
}
}
}
while 문
while 문은 조건절이 참일 동안 while 블록을 반복 실행한다.
while (조건식) {
반복 실행 문장;
}
while문을 사용한 예제는 아래와 같다.
package com.devkuma.tutorial.control.statement;
public class While {
public static void main(String[] args) {
int sum = 0;
int i = 1;
while (i <= 100) {
sum += i;
i++;
}
System.out.println("sum=" + sum);
}
}
do ~ while문
적어도 한번은 수행될 수 있는 반복문이다.
do {
반복 실행 문장;
} while (조건식)
do ~ while문을 사용한 예제는 아래와 같다.
package com.devkuma.tutorial.control.statement;
public class DoWhile {
public static void main(String[] args) {
int sum = 0;
int i = 1;
do {
sum += i;
i++;
} while (i <= 100);
System.out.println("sum=" + sum);
}
}
while문과 do ~ while문의 차이는 조건식을 언제 확인하는지가 다르다.