Search

반응형

'switch문'에 해당되는 글 1건

  1. 2020.04.19 [자바]조건문 if-else문과 switch-case문, 예제로 살펴보기.
반응형

안녕하세요. 신기한연구소 티보이입니다.

자바에서 필수로 알아야 하는 조건문에 대해 알아봅니다.

자바에서 사용하는 조건문은 if-else문과 switch-case문 그리고 3항연산자가 있습니다.

? 세가지가 존재할까요?

어떤 것이 더 좋고 말고는 없습니다.

모두 좋은 조건문이고 가독성에 맞게 잘 사용하시면 됩니다.

그래도 보통은 switch-case문보다는 if-else문을 주로 사용합니다.

코드에서 가장 중요한 부분 중 하나는 가독성이거든요.

먼저 switch문에 대해 알아봅니다.

초기에 switch-case문은 조건식에 사용 가능한 데이터 타입은 [byte, short, char, int] 였습니다.

가장 많이 사용하는 변수형인 String가 지원되지 않아서 사실 일반 개발자들에게는 외면당하고 있었지요.

그런데 JDK 7부터는 String 도 대열에 합류하게 됩니다.

고정된 값인 상수를 사용하는 조건문인 경우 if-else도 가능하지만 틀에 맞아 보이는 switch-case문의 가독성이 더 좋아 보입니다.

자바에서 switch-case문은 어떻게 만들어서 사용하는지 살펴보겠습니다.

Switch(조건식) {

           Case 값1:

                      실행식;

                      Break;

           Case 값2:

                      실행식;

                      Break;

Case 값3:

                      실행식;

                      Break;

           …

           Default :

                      실행식;

}

Switch-case문 조건식의 값과 case문의 값이 일치하면 해당 실행문을 처리하고 break;문에 의해 빠져나오게 됩니다.

주의할 점은 break문을 깜박하고 넣지 않으면 일치하는 case문의 실행문을 처리한 뒤 그 뒤의 모든 case문과 default문도 같이 실행하기 때문에 잘 확인해야 합니다.

컴파일시나 런타임시 오류로 표기되지 않기 때문에 간혹 실수하는 경우가 있거든요.

특히 운영 데이터를 처리하는 과정에서 이런 실수로 인해 머리아픈 상황이 발생할 수 있기 때문입니다.

숫자형인 intchar, 그리고 문자열인 String으로 만든 switch-case문의 샘플을 만들어보겠습니다.

int형으로 만든 샘플입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//Type int
    
switch(i) {
    case 10 :
        System.out.println("The value is 10");
        break;
    case 20 :
        System.out.println("The value is 20");
        break;
    case 30 :
        System.out.println("The value is 30");
        break;
    default :
        System.out.println("no value");
        
}
cs

char형으로 만든 샘플입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//Type char
char c = 'B';
switch(c) {
    case 'A' :
        System.out.println("The value is A");
        break;
    case 'B' :
        System.out.println("The value is B");
        break;
    case 'C' :
        System.out.println("The value is C");
        break;
    default :
        System.out.println("no value");
 
}
cs

String형으로 만든 샘플입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//Type String
String s = "GO";
switch(s) {
    case "COME" :
        System.out.println("The value is COME");
        break;
    case "GO" :
        System.out.println("The value is GO");
        break;
    case "SIT" :
        System.out.println("The value is SIT");
        break;
    default :
        System.out.println("no value");
 
}
cs

break가 없는 경우 샘플입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//break가 없다면...
int j = 20;
switch(j) {
    case 10 :
        System.out.println("The value is 10");
    //    break;
    case 20 :
        System.out.println("The value is 20");
    //    break;
    case 30 :
        System.out.println("The value is 30");
    //    break;
    default :
        System.out.println("no value");        
}
cs

짧은 실행문을 가지고 있고 조건식이 상수라면 가독성이 더 좋아 보일겁니다. 

이제 if-else문에 대해 알아보는데 어떻게 구성되어 있는지 살펴보겠습니다.

If (조건식) {

           실행문

}else if (조건식) {

           실행문

}

Else{

           실행문

}

If-else문의 조건식은 Boolean값입니다. 조건식이 참인지 거짓인지로 판단해서 해당 실행문을 처리하는 건데요.

중요한 건 if로 시작해서 else if로 쭉 확인하다가 하나가 truebreak문이 없어도 해당 실행문만 처리하고 중단합니다.

실행문이 단문이면 굳이 { }를 사용하지 않아도 되고 2행 이상이면 반드시 { }로 묶어줘야 합니다.

조건이 하나면 if문만 사용하면 되고 else문도 필수는 아닙니다.

예문을 살펴볼께요.

1
2
3
4
5
6
7
8
9
boolean b = true;
String s1 = "T";
if(b) {
    System.out.println("boolean test true");
}else if ("T".equals(s1)) {
    System.out.println("String is T");
}else {
    System.out.println("bye");
}
cs

 

If문은 조건식의 Boolean값이기에 어떤 식도 만들어 사용할 수 있답니다.

Switch문과 if문의 속도는 어떤 것이 확실히 빠르다고 할 순 없어 보입니다.

테스트를 해보면 switch문이 빠른 경우가 더 많지만 if문이 더 빠른 경우도 있기에 절대적이지 않다는 의미입니다.

 

초반에 이야기 했듯이 프로그램은 가독성이 중요한 부분을 차지합니다.

필요없이 소스를 많이 만들거나 보기 어렵게 구성하는 것은 좋지 않는 코딩습관이거든요.

어떤 상황이냐에 따라서 switch-case, if-else, 3항연산자를 적절히 사용하면 되겠습니다.

사실 필자는 if-else문의 사용빈도가 거의 95%이상이라는 점

즐코딩 하세요~

반응형