1. if문

지금까지 코드의 실행 흐름이 무조건 위에서 아래로 한 문장씩

순차적으로 진행되었지만 때로는 조건에 따라 문장을 건너띄고

때로는 같은 문장을 반복해서 수행해야할 때가 있다

 

이처럼 흐름을 바꾸는 역할을 하는 문장들을 제어문이라고 한다

 

if (조건식) {
	// 조건식이 참(true)일 때 수행될 문장들을 적는다
}

 

2. 블럭 { }

여러 문장을 하나의 단위로 묶을 수 있는데 이를 블럭이라 한다

 

한 문장만 넣을때는 블럭을 생략 할 수도 있다

 

1번 스타일
if (조건식) {

}

2번 스타일
if (조건식)
{

}

3 한문장이라 생략한 스타일
if (조건식)
	System.out.println("합격입니다");
   
또는
if (조건식) System.out.println("합격입니다");

 

3. if - else 문, if - else if 문

if문에서 else문이 추가되었는데 조건이 false일때를 뜻한다

 

if (조건식) {
	// 조건식이 참(ture)일 때 수행될 문장들을 적는다
} else {
	// 조건식이 거짓(false)일 때 수행될 문장들을 적는다
}

 

처리해야 할 경우의 수가 셋 이상일 때 if else if 문을 이용한다

 

if (조건식 1) {
	// 조건식1의 연산결과가 참일 때 수행될 문장들을 적는다
} else if(조건식 2) {				// 여러 개의 else if를 사용할 수 있다
	// 조건식2의 연산결과가 참일 때 수행될 문장들을 적는다
} else {					// 마지막은 보통 else로 끝내지만 else 블럭은 생략 가능하다
	// 위의 어느 조건식도 만족하지 않을 때 수행될 문장들을 적는다
}

 

4. 중첩 if문

if문 안에 if문을 포함시키는것을 뜻하고 중첩의 횟수에 제한은 없다

 

if (조건식 1) {
	// 조건식1의 연산결과가 true일 때 수행될 문장들을 적는다
	if(조건식 2) {
    	// 조건식1과 조건식2가 모두 true일 때 수행될 문장들
    } else {
    	// 조건식1이 true이고, 조건식2가 false일 때 수행되는 문장들
    }
    
}else {
	// 조건식1이 false일 때 수행되는 문장들
}

 

5. switch문

경우의 수가 많아질수록 else if를 계속 추가해야 하므로 복잡해진다

 

단 하나의 조건식으로 많은 경우의 수를 처리할때는 switch문을 쓴다

 

switch (조건식) {
	case 값1 :
    	// 조건식의 결과가 값1과 같을 경우 수행될 문장들
        break;
    case 값2 :
    	// 조건식의 결과가 값2와 같을 경우 수행될 문장들
        break;
    default :
    	// 조건식의 결과와 일치하는 case문이 없을 때 수행될 문장들
}

 

만약 중간에 break 가 없으면 해당 case 부터 끝 문장 즉 모든 문장이 수행된다

 

제약조건

1) switch문의 조건식 결과는 정수 또는 문자열이어야 한다

2) case문의 값은 정수 상수(문자 포함), 문자열만 가능하며 중복되지 않아야 한다

 

int num, result;
final int ONE = 1;

switch(result) {
	case '1':		// ok. 문자 리터럴(정수 49와 동일)
    case ONE:		// ok. 정수 상수
    case "YES":		// ok. 문자열 리터럴 JDK 1.7부터 허용
    case num:		// error. 변수는 불가
    case 1.0:		// error. 실수도 불가
}

 

6. for문

어떤 작업이 반복적으로 수행되도록 할 때 사용된다

 

for (초기화; 조건식; 증감식) {
	// 조건식이 참(true)인 동안 수행될 문장들을 적는다
}

 

초기화

반복문에 사용될 변수를 초기화하는 부분이며 처음에 한번만 수행한다

보통 변수 하나로 제어하지만 둘 이상의 변수가 필요하면 콤마로 구분한다

 

for(int i=1; i<10; i++) { }		// 변수 i의 값을 1로 초기화 한다

for(int i=0, j=0; i<10; i++, j++) { }	// int 타입의 변수 i와 j를 0으로 선언하고 초기화 한다

 

조건식

조건식의 값이 참(true)이면 반복을 계속하고 거짓(false)이면

반복을 중단하고 for문을 벗어난다

 

조건을 잘못주면 무한루프에 빠질 수 있다

 

증감식

반복문을 제어하는 변수의 값을 증가 또는 감소시키는 식이다

 

매 반복마다 변수의 값이 증감식에 의해서 점진적으로 변하다가

결국 조건식이 거짓이 되어 for문을 벗어나게 된다

 

7. 중첩 for문

for문 안에 또 다른 for문을 포함시키는것을 뜻한다

 

보통 바깥 for문이 열 안쪽 for문이 행이라고 보면 된다

 

for(int i=0; i<5; i++) {
	for(int j=0; j<5; j++) {
    	System.out.print("*");
    }
    System.out.println();
}

 

8. while문

while(조건식) {
	// 조건식의 연산결과가 참(true)인 동안 반복될 문장들을 찍는다
}

 

 

9. do while 문

while문은 조건식의 결과에 따라 블럭이 한 번도 수행되지 않을 수 있지만

do while문은 최소한 한번은 수행될 것을 보장한다

 

do {
	// 조건식의 연산결과가 참일 때 수행될 문장들을 적는다 (처음 한 번은 무조건 실행)
} while(조건식);	<- 끝에 ; 를 붙여야한다

 

10. break 문

반복문에서도 break문을 사용할 수 있는데

break문은 자신이 포함된 가장 가까운 반복문을 벗어난다

주로 if문과 함께 사용되어 특정 조건을 만족할 때 반복문을 벗어나게 한다

 

11. continue 문

continue문은 반복문 내에서만 사용될 수 있으며

반복이 진행되는 도중에 continue문을 만나면

반복문의 끝으로 이동하여 다음 반복으로 넘어간다

 

for문의 경우 증감식으로 이동하며

while문과 do while문의 경우 조건식으로 이동한다

 

continue문은 반복문 전체를 벗어나지 않고

다음 반복을 계속 수행한다는 점이 break문과 다르다

 

주로 if문과 함께 사용되어 특정 조건을 만족하는 경우에 continue 문 이후

문장들을 수행하지 않고 다음 반복으로 넘어가서 계속 진행된다

 

for(int i=0; i<10; i++) {
    if (i%3==0) {
    	continue;
    }
    System.out.println(i);
}

 

12. 이름 붙은 반복문

break문은 근접한 단 하나의 반복문만 벗어날 수 있다

여러개의 반복문이 중첩된 경우에는 중첩 반복문을 완전히 벗어날 수 없다

 

 

참고

- 자바의 정석