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문의 차이는 조건식을 언제 확인하는지가 다르다.