if (조건식) {
수행문;
}
// 블럭 안에 수행문이 하나일 경우 괄호를 생략 가능하다.
if (조건식) 수행문;
조건식이 '참'일 경우 블럭 안의 문장이 수행된다.
조건식의 결과가 반드시 true 또는 false이어야 하므로 비교연산자와 논리연산자로 구성된다.
if (조건식) {
수행문 1; // 조건식이 참일 경우 수행.
} else {
수행문 2; // 조건식이 거짓일 경우 수행.
}
// 조건연산자
(조건식) ? 결과1 : 결과2;
// 조건식이 참일경우 결과1, 거짓일 경우 결과2.
if (조건식 1) {
수행문 1; // 조건식 1이 참일 경우 수행.
} else if (조건식 2) {
수행문 2; // 조건식 2가 참일 경우 수행.
} else if (조건식 3) {
수행문 3; // 조건식 3이 참일 경우 수행.
} else {
수행문 4; // 조건식 1~3에 모두 해당하지 않을 경우 수행.
};
조건이 여러 개일 경우 if-else
문으로 표현 가능하다.
첫 번째 조건부터 순서대로 평가해서 결과가 참인 조건식을 만나면 해당 블럭을 수행하고 if-else
문을 벗어난다.
결과가 참인 조건식이 하나도 없으면 else
블럭의 문장이 수행된다. else 블럭은 생략이 가능하다.
switch (조건) {
case 값1:
수행문1;
break;
case 값2:
수행문2;
break;
case 값3:
수행문3;
break;
default:
수행문4;
}
경우의 수가 많아지면 if-else
문 대신 switch
문으로 작성하는 것이 좋다.
switch
문의 조건식은 결과값이 반드시 정수(문자)이거나 문자열이어야 하며, case문의 값은 중복되면 안된다.
break
문은 각 case문의 영역을 구분하는 역할을 한다.
만약 break문을 생락하면 다른 break문을 만나거나 switch문의 끝을 만날 때까지 수행된다.
case문은 여러 경우를 동시에 처리할 때 break문을 생략해 사용하기도 한다.
만약 조건식의 결과와 일치하는 case문이 없으면 default
문으로 이동하게 된다. (if
문의 else
블럭과 같은 역할이다.)
switch
문은 변수를 입력 받아 미리 정해놓은 여러 값들과의 일치 여부를 판단해 switch
문 내의 control flow를 결정한다.
if else
문은 boolean의 결과 값을 내놓은 조건문에 따라 true, false에 해당하는 각각 두 개의 흐름(control flow)으로 갈라진다.
if else
문을 중첩되게 배치하면 두 개 이상의 control flow를 가질 수 있게 된다.
if else
문을 사용할 수 있는 모든 상황에 switch
문을 사용할 수 있는 것은 아니다.
하지만 모든 switch
문은 if else
문으로 대체될 수 있다.
즉, 하나의 변수를 입력받아 그 변수의 값에 따라 다른 흐름으로 이동할 수 있는 코드를 짜야할 때, switch
문과 if else
문 둘 다 사용될 수 있다.
둘 중 어느 것을 사용해야 더 좋을까?
코드의 최적화를 위해서 if else
문보다 switch
문을 사용하는 것이 적절하다.