If~else문
If문과 else if문 조건은 true
인 경우에만 안에 있는 내용이 실행되고, false
인 경우에는 else문 안에 있는 내용이 실행된다. Else if문이 여러개인 경우 가장 먼저 나오는 true인 조건만 실행되고 전체 if문은 종료된다.
package java_basic;
public class Condition {
public static void main(String[] args) {
if(false) {
System.out.println(1);
System.out.println(2);
System.out.println(3);
}else if(false){
System.out.println(4);
}else {
System.out.println(5);
}
}
}
// 5
Switch문
Switch문은 조건에 맞는 부분을 기준으로 실행할 내용을 정하는 문법이다. if~else문과 비슷하다고 생각하면 된다.
package java_basic;
public class Condition {
public static void main(String[] args) {
switch(2) {
case 1:
System.out.println("This is A");
case 2:
System.out.println("This is B");
case 3:
System.out.println("This is C");
}
}
}
case 앞에 오는 내용이 switch에 들어가는 내용과 같을 때 해당 내용을 실행한다. 위의 경우에는 case 'B'
의 This is B
를 출력하게 된다. 그리고 그 이후의 내용인 case 'C'
도 실행하게 된다. 오직 case 'B'
만 실행하고 싶다면 아래의 내용처럼 break;
를 각 case에 넣어주면 된다. 또한 일치하는 조건이 없는 것을 처리하기 위해 default
를 사용하면 된다.
package java_basic;
public class Condition {
public static void main(String[] args) {
switch(2) {
case 1:
System.out.println("This is A");
break;
case 2:
System.out.println("This is B");
break;
case 3:
System.out.println("This is C");
break;
default:
System.out.println("Default");
}
}
}
code 최적화를 위해 if~else문보다 switch문을 더 많이 사용한다. 만약 if~else문이 3개 이상이 된다면 시간복잡도 면에서 switch문이 더 유리하다. if~else문은 원하는 조건이 나올 때까지 차례대로 찾아가는 O(N)의 복잡도를 가지고 있다. 반면에 switch문은
jump table
을 만들어서 해당 조건을 찾아가는 방식이므로 시간복잡도 면에서는 이득, 공간복잡도 면에서는 손해이다.