JAVA

조건문(Conditional Statements)

jki09871 2024. 7. 23. 10:08

조건문은 특정 조건에 따라 다른 코드를 실행할 수 있도록 합니다. 자바에서 제공하는 주요 조건문에는 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가 있을 때 성능이 유리할 수 있습니다.

단점:

  1. 정확한 값 매칭 필요:
    • switch 문은 각 case가 표현식의 값과 정확히 일치해야 합니다. 범위 조건이나 복잡한 비교는 처리할 수 없습니다.
  2. 자료형 제한:
    • 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 문은 어떤 자료형의 조건식도 사용할 수 있습니다.

단점:

  1. 가독성 저하:
    • 조건이 많아지면 if-else 문이 길어지고 복잡해져서 가독성이 떨어질 수 있습니다.
  2. 성능 저하:
    • 조건문이 많아질수록 각 조건을 순차적으로 비교해야 하므로 성능에 영향을 줄 수 있습니다. 특히 조건이 복잡할 경우 if-else 문이 switch 문보다 느릴 수 있습니다.
  3. 중복 코드:
    • 유사한 조건 처리 로직이 반복될 수 있어 중복 코드가 생길 수 있습니다.

결론

  • 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