if-else 구문
- if-else : boolean의 결과 값을 내놓는 조건문에 따라 true, false에 해당하는 두 개의 흐름으로 갈라진다.
- if-else문을 중첩시키면 두 개의 흐름뿐만 아니라 그 이상의 control flow을 가질 수도 있다.
int month = 5; String monthString = ""; if(month == 1) monthString = "January"; else if (month == 2) monthString = "February"; else if (month == 3) monthString = "March"; else if (month == 4) monthString = "April"; else if (month == 5) monthString = "May"; else monthString = "Invalid month"; System.out.println(monthString); // May
switch-case 구문
- switch-case : 변수를 입력 받아 미리 정해놓은 여러 값들과의 일치여부를 판단한다.
int month = 5; String monthString = ""; switch (month) { case 1: monthString = "January"; break; case 2: monthString = "February"; break; case 3: monthString = "March"; break; case 4: monthString = "April"; break; case 5: monthString = "May"; break; default: monthString = "Invalid month"; break; } System.out.println(monthString); // May
- 모든 if-else문이 switch-case 대체될 수 있는 것은 아니다.
- 반대로 모든 switch 구문은 if else문으로 대체될 수 있다.
- switch-case : item의 개수가 N개 일 때 시간복잡도 = O(logN)
- LookupSwitch 형식의 자바 바이트코드
- if-else : item의 개수가 N개일때 시간복잡도 = O(N)
enum 클래스