조건문 if, switch
if문
if문은 가장 기본적인 조건문이며,
'만일(if) 조건식이 참(true)이면 괄호{}안의 문장들을 수행하라'라는 의미를 가진다.
if (조건식) {
//조건식이 참(true)일 때 수행될 문장들을 적는다.
}
if (score > 60) {
System.out.println("합격입니다.")
}
if-else문
if문의 변형인 if-else문의 구조는 if문에 'else블럭'이 추가된 구조이다.
조건식의 결과가 참이 아닌 거짓일 때 else블럭의 문장을 수행하라는 의미를 가진다.
if (조건식) {
// 조건식이 참(0이 아닌 값)일 때 수행될 문장들을 적는다.
} else {
// 조건식이 거짓(0)일 때 수행될 문장들을 적는다.
}
if(input==0) {
System.out.println("0입니다.");
}
if(input!=0) {
System.out.println("0이 아닙니다.");
}
// 위의 if문을 if-else문으로 바꾸면 다음과 같다.
if(input==0) {
System.out.println("0입니다.");
} else {
System.out.println("0이 아닙니다.");
}
if-else if문
처리해야 할 경우의 수가 셋 이상인 경우에 'if-else if'문을 사용한다.
if (조건식1) {
//조건식1의 연산결과가 참일 때 수행될 문장들을 적는다.
} else if (조건식2) {
//조건식2의 연산결과가 참일 때 수행될 문장들을 적는다.
} else if (조건식3) { //여러개의 else if를 사용할 수 있다.
//조건식3의 연산결과가 참일 때 수행될 문장들을 적는다.
} else { //마지막에는 보통 else블럭으로 끝나며, else블럭은 생략가능하다.
//위의 어느 조건식도 만족하지 않을 때 수행될 문장들을 적는다.
}
중첩 if문
if문의 블럭 내에 또 다른 if문을 포함시키는 것이 가능한데 이것을 중첩 if문이라고 하며,
중첩의 횟수에는 거의 제한이 없다.
if (조건식1) {
//조건식1의 연산결고가 true일 때 수행될 문장들을 적는다.
if (조건식2) {
//조건식1, 조건식2 모두 true일 때 수행될 문장들을 적는다.
} else {
//조건식1이 true이고, 조건식2가 false일 때 수행되는 문장들을 적는다.
}
} else {
//조건식1이 false일 때 수행되는 문장들을 적는다.
}
switch문
먼저, switch문의 기본구조는 다음과 같다.
switch (조건식) {
case 값1 :
//조건식의 결과가 값1과 같을 경우 수행될 문장들
//...
break;
case 값2 :
//조건식의 결과가 값2와 같을 경우 수행될 문장들
//...
break;
//...
default :
//조건식의 결과와 일치하는 case문이 없을 때 수행될 문장들
//...
}
if문은 조건식의 결과가 참과 거짓, 두 가지 밖에 없기 때문에 경우의 수가 많아질수록 else-if를 계속 추가해야하므로 조건식이 많아져서 복잡해지고, 여러 개의 조건식을 계산해야하므로 처리시간도 많이 걸린다.
이러한 if문과 달리 switch문은 단 하나의 조건식으로 많은 경우의 수를 처리할 수 있고, 표현도 간결하여 알아보기 쉽다. 그래서 처리할 경우의 수가 많은 경우 if문보다 switch문으로 작성하는 것이 좋다.
다만 switch문은 제약조건이 있기 때문에, 경우의 수가 많아도 어쩔 수 없이 if문으로 작성해야 하는 경우가 있다.
**switch문은 항상 if문으로 변환이 가능하지만, if문은 switch문으로 작성할 수 없는 경우가 많다.
switch문의 제약조건
1. switch문의 조건식 결과는 정수 또는 문자열이어야 한다.
2. case문의 값은 정수 상수만 가능하며, 중복되지 않아야 한다.
입력
import java.util.*;
class SwitEx1 {
public static void main(String[] args) {
int month = 0;
System.out.print("현재 월을 입력하세요.>");
Scanner scanner = New scanner(System.in);
String tmp = scanner.nextLine(); //화면을 통해 입력받은 내용을 tmp에 저장
month = Integer.parseInt(tmp); //입력받은 문자열(tmp)을 숫자로 변환
switch(month) {
case 3:
case 4:
case 5:
System.out.println("현재의 계절은 봄입니다.");
break;
case 6: case 7: case 8:
System.out.println("현재의 계절은 여름입니다.");
break;
case 9: case 10: case 11:
System.out.prinln("현재의 계절은 가을입니다.");
break;
default:
case 12: case 1: case 2:
System.out.println("현재의 계절은 겨울입니다.");
}
}
}
출력
현재 월을 입력하세요.>3
현재의 계절은 봄입니다.
** case문은 한 줄에 하나씩 쓰던, 한 줄에 붙여서 쓰던 상관없다
case 3: case 3: case 4: case 5:
case 4:
case 5:
참고자료 : 자바의 정석 3rd Edition
'Back-end > JAVA' 카테고리의 다른 글
JAVA 기본 문법 정리 - 4. 조건문과 반복문 ② (0) | 2022.11.29 |
---|---|
JAVA 기본 문법 정리 - 3. 연산자(Operator) ② (0) | 2022.11.22 |
JAVA 기본 문법 정리 - 3. 연산자(Operator) ① (0) | 2022.11.12 |
JAVA 기본 문법 정리 - 2. 변수(Variable) ③ (0) | 2022.11.12 |
JAVA 기본 문법 정리 - 2. 변수(Variable) ② (0) | 2022.11.12 |
댓글