이전까지 배웠던 코드는 모두 위에서 아래로 순차적으로 실행되는 프로그램이었다. 코드의 흐름을 원하는대로 제어하기 위해 제어문이 나왔고 제어문에는 조건문과 반복문이 있다. 이 글에서는 조건문을 다루도록 하겠다. 조건문에는 if문과 switch문이 있다.
1. if 문
if문은 다음과 같으며 ()안의 조건식이 true일 때 {} 안의 문장, 블록이 한 번 실행된다.
if (조건식) {
// 문장 ...
}
1) 조건식
조건식의 결과에는 true 또는 false만 나오도록 해야한다. 조건식은 보통 비교 또는 논리 연산자로 이루어진다.
2) 블록
블록은 여러 문장을 하나로 묶을 때 사용되며, 들여쓰기를 통해 블록 내의 문장들을 밖과 구분지어주는 것이 가독성에 좋다. 블럭 내의 문장이 하나일 때는 생략 가능하지만 4. 중첩의 예시와 같은 경우가 발생할 수 있기 때문에 웬만하면 안 하는 게 좋다.
3) if-else문
if문의 변형인 if-else문은 둘 중 하나의 블럭만을 실행하기 위해 만들어졌다. else 블록은 생락할 수도 있다는 사실을 염두해두자.
4) if-else if문
if-else if문은 경우의 수가 둘 보다 많을 때 사용된다. if-else if문의 실행 흐름을 보면 처음 if문의 조건식부터 참인 조건식을 만날 때까지 각 블록의 조건식이 평가된다. 이후 참인 조건식의 블록이 실행되고 전체 if-else if문을 빠져나온다.
[참고] if-else if문의 조건식은 범위가 좁은 부분부터 작성하자.
예를 들어 점수에 따라 다른 평가를 주는 if-else if문을 작성한다고 하자.

if-else if문은 처음 조건식부터 평가해 참인 조건식을 찾아 나간다. score > 80 (1), score > 90 (2) 이 순서대로 조건식을 평가하게 된다면 (1) + (2)가 거짓일 때 score가 (2)의 영역을 만족하는지 평가할 수가 없게 된다. 따라서, if-else if문의 조건식은 범위가 좁은 부분부터 작성하자.
5) 중첩 if문
if문에 if를 넣는 것을 중첩 if문이라고 하며 중첩의 횟수에는 제한이 없지만 3~4번 이상은 하지 않는 게 좋다.
[예]
if (i > 0) if (i >=3) // 문장... else // 문장... |
⇔ | if (i > 0) { if (i >=3) { // 문장... } else // 문장... } } |
else는 가장 가까운 if문과 연결되기 때문에 왼쪽 코드의 들여쓰기와 전혀 다른 의도로 오른쪽 코드가 실행될 것이다.
2. switch문
switch문은 많은 경우의 수가 존재할 때 사용한다. if-else if문을 쓸 수도 있겠지만 모든 조건식을 차례로 평가하는 if-else if문과 달리 switch문은 조건식의 값으로 바로 이동하기 때문에 더 효율적이다.
switch(조건식) {
case 값1:
// 문장...
break; // 빼먹지 않기
case 값2: case 값3: case 값4 // 여러 케이스를 한 번에 만족하는 경우 (열 또는 행 어떤 방식으로 쓰던 상관 없음.)
// 문장...
break;
default: // 빼먹지 않기
// 문장...
break; // 생략 가능
}
주석을 유념해서 보자.
switch문의 제약 조건
1. switch문의 조건식의 결과는 정수, 문자 또는 문자열이어야 한다.
2. case값은 정수, 문자, 문자열 또는 상수 (값이 변하지 않는 변수)이어야 한다. (변수, 실수 안됨)
3. case값은 중복될 수 없다.

위의 제약 조건 때문에 (1)의 경우는 모두 만족하지만 (2)는 불가능한 경우도 있다. 따라서 if-else if문으로 먼저 작성해보고 switch문을 작성해보길 바란다.
'자바 (Java) > 요약' 카테고리의 다른 글
Chpt. 5 배열 - 주제 1. 배열은 변수의 모음 (1) | 2023.10.21 |
---|---|
Chpt. 4 조건문과 반복문 - 주제 2. 조건만 맞으면 반복 실행되는 반복문 (1) | 2023.10.21 |
Chpt. 3 연산자 - 주제 1. 모든 연산자는 값을 리턴한다. (2) | 2023.10.19 |
Chpt. 3 연산자 - 주제 2. 값의 손실이 일어나지 않는 방향으로 형변환이 일어난다. (0) | 2023.10.19 |
Chpt. 2 변수 - 주제 2. 값은 기본형과 참조형으로 나뉜다. (2) | 2023.10.17 |