조건문은 특정 조건에 따라 다른 코드를 실행할 수 있도록 합니다. 자바에서 제공하는 주요 조건문에는 if, else if, else, switch 문이 있습니다.
if 문
if 문은 조건이 참일 때 코드 블록을 실행합니다.
int age = 20;
if (age >= 18) { // age가 18보다 크거나 같을때 true
System.out.println("성인입니다.");
}
if-else 문
if-else 문은 조건이 참일 때와 거짓일 때 각각 다른 코드 블록을 실행합니다.
int age = 15;
if (age >= 18) { // age가 18보다 크거나 같으면 true
System.out.println("성인입니다.");
} else { // false일 경우 실행하는 코드
System.out.println("미성년자입니다.");
}
답 : 미성년자입니다.
else-if 문
else-if 문은 여러 조건을 순차적으로 검사하여 각 조건에 따라 다른 코드 블록을 실행합니다.
int score = 85;
if (score >= 90) { // score가 90보다 크거나 같으면 true
System.out.println("A학점");
} else if (score >= 80) { // score가 80보다 크거나 같으면 true
System.out.println("B학점");
} else if (score >= 70) { // score가 70보다 크거나 같으면 true
System.out.println("C학점");
} else if (score >= 60) { // score가 60보다 크거나 같으면 true
System.out.println("D학점");
} else { // score 그 외 점수다
System.out.println("F학점");
}
답 : B학점
switch 문
switch 문은 변수의 값을 검사하여 해당 값과 일치하는 case를 실행합니다. 각 case는 break 문으로 끝나야 하며, default를 사용하여 어떤 case와도 일치하지 않는 경우를 처리할 수 있습니다.
int day = 3;
switch (day) {
case 1:
System.out.println("월요일");
break;
case 2:
System.out.println("화요일");
break;
case 3:
System.out.println("수요일");
break;
case 4:
System.out.println("목요일");
break;
case 5:
System.out.println("금요일");
break;
case 6:
System.out.println("토요일");
break;
case 7:
System.out.println("일요일");
break;
default:
System.out.println("잘못된 요일");
break;
}
답 : 수요일
밑에는 아주아주 간단한 조건문을 이용한 예시 이다.
Scanner sc = new Scanner(System.in);
System.out.print("수학 점수를 입력하세요 : ");
int scoreSwitch = sc.nextInt();
switch (scoreSwitch) {
case 90 :
System.out.println("학점은 : A");
break;
case 80 :
System.out.println("학점은 : B");
break;
case 70 :
System.out.println("학점은 : C");
break;
default :
System.out.println("학점은 : F");
}
sc.nextLine();
System.out.print("영어 점수를 입력하세요 : ");
int scoreIf = sc.nextInt();
if (scoreIf >= 90){
System.out.println("학점은 : A");
}else if (scoreIf >= 80){
System.out.println("학점은 : B");
}else if (scoreIf >= 70){
System.out.println("학점은 : C");
} else if (scoreIf < 70) {
System.out.println("학점은 : F");
}
해설 : 점수를 입력하면 그에 해당한 점수를 비교해서 학점을 보여준다.
switch 장·단점
장점:
- 가독성: 여러 조건을 명확하게 나열할 수 있어 가독성이 좋습니다.
- 성능: 컴파일러가 최적화할 수 있는 경우가 있어 성능이 좋을 수 있습니다.
- 특히 많은 case가 있을 때 성능이 유리할 수 있습니다.
단점:
- 정확한 값 매칭 필요:
- switch 문은 각 case가 표현식의 값과 정확히 일치해야 합니다. 범위 조건이나 복잡한 비교는 처리할 수 없습니다.
- 자료형 제한:
- switch 문은 int, short, byte, char, String, enum, 래퍼 클래스 (예: Integer) 등을 지원하지만,
- double, float, boolean, long 등은 지원하지 않습니다.
double value = 2.5;
switch (value) { // 컴파일 오류
case 1.0:
// 처리
break;
case 2.0:
// 처리
break;
}
if-else 장·단점
장점:
- 유연성: 범위 비교, 복잡한 조건식, 논리 연산 등 다양한 조건을 처리할 수 있습니다.
- 자료형에 대한 제약이 없음: if-else 문은 어떤 자료형의 조건식도 사용할 수 있습니다.
단점:
- 가독성 저하:
- 조건이 많아지면 if-else 문이 길어지고 복잡해져서 가독성이 떨어질 수 있습니다.
- 성능 저하:
- 조건문이 많아질수록 각 조건을 순차적으로 비교해야 하므로 성능에 영향을 줄 수 있습니다. 특히 조건이 복잡할 경우 if-else 문이 switch 문보다 느릴 수 있습니다.
- 중복 코드:
- 유사한 조건 처리 로직이 반복될 수 있어 중복 코드가 생길 수 있습니다.
결론
- switch 문은 명확한 값 비교에 유리하고 가독성이 좋지만, 값 매칭과 자료형 제약이 있으며 복잡한 조건을 처리하기 어렵습니다.
- if-else 문은 복잡한 조건이나 범위 비교를 처리할 수 있어 유연하지만, 가독성이 떨어지고 성능이 저하될 수 있습니다.
따라서 상황에 맞게 switch 문과 if-else 문을 적절히 선택하여 사용하는 것이 좋습니다.
'JAVA' 카테고리의 다른 글
컬렉션(List, Set, Queue, Map ) (1) | 2024.07.23 |
---|---|
배열(Arrays) (0) | 2024.07.23 |
반복문 (Loops) (1) | 2024.07.23 |
변수 와 상수 (1) | 2024.07.22 |
예약어에 대해서 알아보자! (1) | 2024.07.22 |