안녕하세요. 신기한연구소 티보이입니다.
자바에서 필수로 알아야 하는 조건문에 대해 알아봅니다.
자바에서 사용하는 조건문은 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문도 같이 실행하기 때문에 잘 확인해야 합니다.
컴파일시나 런타임시 오류로 표기되지 않기 때문에 간혹 실수하는 경우가 있거든요.
특히 운영 데이터를 처리하는 과정에서 이런 실수로 인해 머리아픈 상황이 발생할 수 있기 때문입니다.
숫자형인 int와 char, 그리고 문자열인 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로 쭉 확인하다가 하나가 true면 break문이 없어도 해당 실행문만 처리하고 중단합니다.
실행문이 단문이면 굳이 { }를 사용하지 않아도 되고 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%이상이라는 점…
즐코딩 하세요~
'Software > Java' 카테고리의 다른 글
[자바]StringBuffer vs. String 메모리 관리하기. (0) | 2020.05.03 |
---|---|
[자바]super, this, super(), this() 키워드에 대해 알아봅니다. (0) | 2020.04.23 |
[자바]클래스(class), 객체(object) 그리고 인스턴스(화) 기초정리... (0) | 2020.04.17 |
[java]System.currentTimeMillis() 와 System.nanoTime() 사용하기. (1) | 2020.04.12 |
[java]비교연산 "==" vs "equals()" 쉽게 이해하기. (0) | 2020.04.09 |