1.8.2: Switch 문과 If-then-else 사이의 선택
프로그램의 흐름을 제어하는 데 있어 Switch 문과 If-then-else 문은 모두 유용하지만, 각각의 장단점이 있습니다. 이 섹션에서는 두 제어 구조의 차이점과 상황에 따른 적절한 선택 방법에 대해 자세히 설명합니다.
Switch 문 vs If-then-else
Switch 문의 특징
- 표현식 제한: 단일 정수, 열거형 값, 또는 String 객체만 테스트할 수 있습니다.
- 등가 비교: 값의 정확한 일치를 확인합니다.
- 효율성: 많은 조건을 처리할 때 효율적입니다.
If-then-else의 특징
- 유연한 표현식: 범위, 조건 등을 포함한 다양한 형태의 표현식을 테스트할 수 있습니다.
- 복잡한 논리: AND, OR 등의 논리 연산자를 사용할 수 있습니다.
- 모든 타입 지원: 모든 타입의 변수를 사용할 수 있습니다.
선택 기준
- 표현식의 복잡성:
단순한 등가 비교인 경우: Switch 문이 적합합니다.
범위나 복잡한 조건을 포함하는 경우: If-then-else가 더 적합합니다. - 조건의 수:
여러 개의 명확한 조건이 있을 경우: Switch 문이 더 효율적입니다.
복잡하거나 중첩된 조건이 있는 경우: If-then-else가 더 적합합니다. - 변수의 타입:
byte, short, char, int, enum, String 타입의 변수를 사용하는 경우: Switch 문이 가능합니다.
그 외의 타입을 사용하는 경우: If-then-else를 사용해야 합니다. - 코드의 가독성:
조건이 명확하고 간단한 경우: Switch 문이 더 직관적일 수 있습니다.
복잡한 논리나 범위 비교가 필요한 경우: If-then-else가 더 명확할 수 있습니다.
예시 코드
Switch 문 사용 예:
int month = 3;
String monthName;
switch (month) {
case 1: monthName = "January"; break;
case 2: monthName = "February"; break;
case 3: monthName = "March"; break;
// ... 다른 월들에 대한 case 처리 ...
default: monthName = "Invalid month"; break;
}
System.out.println(monthName);
If-then-else 사용 예:
double temperature = 25.5;
String stateOfWater;
if (temperature < 0) {
stateOfWater = "Ice";
} else if (temperature < 100) {
stateOfWater = "Liquid";
} else {
stateOfWater = "Gas";
}
System.out.println("At " + temperature + "°C, water is " + stateOfWater);
추가 고려사항
- 범위 테스트: If-then-else는 범위를 쉽게 테스트할 수 있습니다. Switch 문은 개별 값만 테스트할 수 있으므로, 범위 테스트에는 적합하지 않습니다.
int score = 85;
// If-then-else를 사용한 범위 테스트
if (score >= 90) {
grade = 'A';
} else if (score >= 80) {
grade = 'B';
} else if (score >= 70) {
grade = 'C';
}
- 복잡한 논리: If-then-else는 복잡한 논리 연산을 지원합니다. Switch 문은 단순한 등가 비교만 가능합니다.
boolean isAdmin = true;
int age = 25;
// If-then-else를 사용한 복잡한 조건
if ((isAdmin && age > 18) || (!isAdmin && age > 21)) {
System.out.println("Access granted");
} else {
System.out.println("Access denied");
}
- 타입 유연성: If-then-else는 모든 타입의 변수를 사용할 수 있습니다. Switch 문은 특정 타입만 허용합니다.
double averageGrade = 87.5;
// If-then-else를 사용한 부동소수점 비교
if (averageGrade >= 90) {
System.out.println("Excellent");
} else if (averageGrade >= 80) {
System.out.println("Good");
}
정리
Switch 문과 If-then-else는 각각 고유한 장단점이 있으며, 상황에 따라 적절히 선택해야 합니다. 일반적으로:
- 단순한 등가 비교와 명확한 조건을 가진 경우: Switch 문이 더 효율적이고 가독성이 좋습니다.
- 복잡한 논리, 범위 비교, 또는 다양한 타입의 변수를 다룰 때: If-then-else가 더 적합합니다.
편히 모아진 글 보시려면 아래 위키독스 링크 >>
https://wikidocs.net/book/17111
'JAVA' 카테고리의 다른 글
JAVA: switch 표현식의 값 생성[코딩백과 with JAVA] (0) | 2024.12.22 |
---|---|
JAVA: Case에 String 타입 사용, Null 선택자 변수[코딩백과 with JAVA] (0) | 2024.12.22 |
JAVA Switch문 [코딩백과 with JAVA] (0) | 2024.12.22 |
JAVA 제어문 - for 문 [코딩백과 with JAVA] (0) | 2024.12.22 |
JAVA while 문 [코딩백과 with JAVA] (0) | 2024.12.22 |