학습할 것

  • 선택문
  • 반복문

제어문

자바 인터프리터는 위에서 아래로 오른쪽에서 왼쪽으로 프로그램을 읽어갑니다. 그런 프로그램의 흐름을 변경할 수 있는게 제어문입니다.

제어문 종류

  • 선택문 : if, if-else, switch 등
  • 반복문 : for, while, do-while
  • 분기문 : break, continue, return

선택문

단일 if

지정한 조건이 만족할 시에 지정한 블록 {} 안에 있는 코드가 실행됩니다.

if(조건식) {
	조건이 참일 경우 실행되는 코드;
}

만약 if문 안에 코드가 한 줄이라면 {}은 생략이 가능합니다.

if-else

기본적인 if문에서는 참일 경우만 실행이 됬다면, if-else문은 거짓일 때도 실행할 수 있습니다.
즉, 조건식이 참일 경우와 거짓일 경우의 실행되는 코드들을 나눌 수 있다는 것입니다.

if(조건식) {
	참일 경우;
} else {
	거짓일 경우;
}

여러가지 조건이 필요할 때에는 else if()를 사용하여 또 다른 조건식을 사용할 수 있습니다.

switch

if와 if-else와 달리 변수에 대해 평가를 하고 이를 분기할 수 있습니다.
평가 당하는 변수는 원시형 타입(int, byte, char)일 수 있고, Enum형 혹은 String, Wrapper(Integer, Byte, Character) 클래스도 가능합니다.

switch(변수) {
	case 값 A :
    	변수가 값 A에 해당하는 경우;
        break;
    case 값 B :
    	변수가 값 B에 해당하는 경우;
        break;
    default : 
    	어떠한 값에도 해당하지 않는 경우;
        break;

위 예시는 다음과 같이 if-else 문으로 변경 가능합니다.

if(변수 == 값 A) {
	변수가 값 A에 해당하는 경우;
} else if (변수 == 값 B) {
	변수가 값 B에 해당하는 경우;
} else {
	어떠한 값에도 해당하지 않는 경우;
}

반복문

for

설정한 조건이 만족 될 때까지 지정한 코드 블럭이 계속해서 수행됩니다.

for(초기식; 조건식; 증감식) {
	반복 될 코드;
}

향상된 for 문

JDK 5.0 이상부터 배열 혹은 컬렉션의 순회시에 다음과 같이 조금 더 향상된 for 문을 사용할 수 있습니다.

for(타입 변수명 : 배열/컬렉션) {
	반복 될 코드;
}

기존 for문의 배열 인덱스 문제(ArrayIndexOutOfBoundsException 예외)를 해결해준다는 장점이 있습니다.

향상된 for문 예시

String[] array = {"a", "b", "c", "d", "e"};
for(String obj : array) {
	System.out.println(" "+ obj); 
}

출력 : a b c d e

while

특정 조건이 참일 경우에 지정한 코드 블럭이 계속해서 수행되는 구문입니다.

while(조건식) {
	조건식이 참일 경우 반복되는 코드;
}

조건식이 항상 참일 경우에는 계속해서 해당 코드들이 실행되므로 다음 명령들을 수행할 수 없는 상태가 됩니다.

do-while

while 문이 조건식을 먼저 판별하고 코드를 수행했다면, do-while 문은 먼저 코드블럭을 수행하고 조건을 판별합니다.

do {
	조건식이 참일 경우 반복되는 코드;
} while(조건식);

분기문

조건문에서 프로그래머의 의도에 의해 중간 흐름을 바꿀 수 있는 구문

break

break 키워드를 만났을 땐 해당 루프를 빠져나간다.

public void myTest(){
    for (int i = 1; i <= 10 ; i++) {
        if (i % 5 == 0) {
            break;	//i가 5일 때 루프 종료
        } else {
            System.out.print(i+" ");
        }
    }
    System.out.println("메서드 종료");	//루프 이후 문장 실행
}

1 2 3 4 5
메서드 종료

continue

continue 키워드를 만났을 때 해당 루프내의 다음 조건식으로 넘어갑니다.

public void myTest(){
    for (int i = 1; i <= 10 ; i++) {
        if (i % 5 == 0) {
            continue;	//i가 5라면, 아래의 문장을 실행하지 않고 i=6 조건식으로 넘어간다.
        } else {
            System.out.print(i+" ");
        }
    }
    System.out.println("메서드 종료");
}

1 2 3 4 6 7 8 9
메서드 종료

return

return 키워드를 만나면 해당 루프와 루프를 감싸고 있던 메서드까지 종료됩니다.

public void myTest(){
    for (int i = 1; i <= 10 ; i++) {
        if (i % 5 == 0) {
            return;		//myTest() 메서드가 종료된다.
        } else {
            System.out.print(i+" ");
        }
    }
    System.out.println("메서드 종료");
}

1 2 3 4

출처

https://raccoonjy.tistory.com/10
https://juntcom.tistory.com/118
https://slow-and-steady-wins-the-race.tistory.com/9

0개의 댓글