Java: 제어문

    Java: 제어문

    2013, Jul 22    

    조건문

    조건문은 조건을 제시한 뒤 만족하거나 불만족할 때의 분기를 제어한다. 조건식은 반드시 boolean으로 평가되는 표현식이어야 한다.

    if-then-else

    if ~ else if ~ else 구간 중 만족하는 조건이 있다면 블록을 실행하고 if문을 끝낸다. if문 안에 if문을 또 작성할 수 있다.

    if (조건식) {
       실행문
    } else if (조건식) {
         실행문
    } else {
         실행문
    }
    
    String str = "hello";
    if ("hello".equals(str)) {
        if (str.length() == 5) {
            System.out.println("is 'hello'");
        } else if (str.length() > 5) {
            System.out.println("something wrong");
        }
    } else {
        System.out.println("is not 'hello'");
    }
    

    switch-case

    조건 1개로 제어 분기. 단, 조건은 int로 변환 가능한 타입과 String(JDK1.7 이상부터), enum 변수만 가능하다.

    switch (조건) {
    case 값1:  // label
        실행문;
        break;
    case 값2:  
        실행문;
        break;
    default: // if문의 else와 같다. 위에 열거된 case에 모두 해당되지 않으면 실행
        실행문;
        break;
    }
    
    char character = 'A';
    switch (character) {
    case 'A':
        System.out.println("A");
    case 'B':
        System.out.println("B");
        break;
    } // case 'A'에 break가 없어서 case 'B'도 같이 실행된다.
    

    반복문

    for loop

    특정 실행 코드 블록을 원하는 횟수만큼 반복 제어

    for (초기식; 조건식; 증감식;) { // 조건식이 TRUE일 때 실행문을 반복한다.
        실행문
    }
    
    byte[] bytes = "한글나라".getBytes();
    for (int i = 0; i < bytes.length; i++) {
        System.out.println(bytes[i]);
    }
    
    for (;;) {
        // some...one?
    }
    

    이렇게 하면 무한루프가 된다.

    향상된 for문 enhanced for loop statement

    for (variable ele : locationEle) { // locationEle : 배열 또는 컬렉션
        실행문
    }
    
    int[] n = new int[] {40, 20, 10, 50, 30, 60, 35, 41, 23, 78} ;
    
    // n의 배열 길이만큼 루프를 돌되 각 사이클마다 i에 n의 요소를 할당한다.
    for (int i : n) {
        System.out.println(i);
    }
    

    다음처럼 배열이나 컬렉션을 인라인으로 선언하여 사용하기도 한다.

    for (String i : new String[] { "+", "-", "*", "/" }) {
        // ...
    }
    

    while

    조건식이 TRUE면 실행문을 반복한다.

    while (조건식) {
        실행문
    }
    
    int n = 1; //초기식
    while (n < 11) { //조건식
        System.out.println(n);
        ++n; //증감식
    }
    

    아래는 무한루프에서 탈출 분기를 설정하는 방법.

    while (true) {
        ...
    
        if (.....) {
            break;
        }
    }
    

    do…while

    while과 비슷하지만 실행문을 우선 실행 후 조건식을 평가한다.

    do {
      실행문
    } while (조건식);
    
    int n = 1;
    do {
        System.out.println(n);
        ++n;
    } while (n<=10);
    

    점프문

    break

    현재 위치에서 가장 가까운 switch 혹은 반복문을 탈출(중단)한다.

    for (int i = 1; i < 11; i++) {
        if (i == 5) {
            break;  
        }
        System.out.println(i);
    }    //1,2,3,4
    

    continue

    현재 자신이 속한 반복문 처음으로 되돌아간다. 증감식이 존재하면 한 번 수행한다.

    for (int i = 1; i < 11; i++) {
        if (i == 5) {
            continue;  
        }
        System.out.println(i);
    }
    // 1,2,3,4,6,7,8,9,10
    

    label

    반복문에 이름을 부여하고 지칭하는 반복문을 바로 탈출하거나 되돌아간다.

    // for문에 Loop1 이라는 이름을 지정
    Loop1: for (int i = 2; i <= 9; i++) {
        for (int j = 1; j <= 9; j++) {
            if (j == 5) {
                break Loop1;    // Loop1 탈출
                //break;        // for j 탈출
                //continue Loop1;    // Loop1의 다음 루프로 이동
                //continue;        // for j 의 다음 루프로 이동
            }
            System.out.println(i + "*" + j + "=" + i * j);
        } // end of for j
        System.out.println();
    } // end of Loop1