조건문은 조건식에 따라 블럭{}
안의 코드를 실행할지 말지 정할 수 있어 프로그램의 실행 흐름을 제어하는 데에 도움을 줌.
if
문과 switch
문 2가지 종류가 있고, 일반적으로는 if
문을 많이 사용.
if (조건식) {
// 수행할 코드
}
조건식이 true
일 때 블럭{}
안의 코드를 수행하게끔 함.
조건식 안에는 앞 챕터에서 다뤘던 비교 연산자와 논리 연산자를 사용하여 작성함. (조건식의 평가 결과가 무조건 true
또는 false
여야 하기 때문)
블럭{}
내의 문장이 하나뿐인 경우, 중괄호 생략 가능
if (hasToken) System.out.println("Welcome!");
// 또는
if (hasToken)
System.out.println("Welcome!");
나중에 문장을 추가해야할 때를 생각해서 블럭{}
으로 감싸주는게 바람직함.
if (hasToken)
System.out.println("Welcome!"); // 조건문의 범위는 여기까지.
System.out.println("Take a look"); // 들여쓰기를 해도 2개 이상의 문장은 블럭{} 없이는 묶이지 않음.
if (조건식) {
// 수행할 코드
} else {
// 조건식이 false인 경우 수행할 코드
}
if
문의 블럭{}
내의 코드를 수행하고, 그 밖의 경우에는 else
문의 블럭{}
내의 코드를 수행함.
if
-else
문은 경우의 수가 2가지인 경우만 커버되므로, 3개 이상인 경우는 else if
를 사용해 여러 가지 조건들을 추가할 수 있음.
if (조건식1) {
// 조건식1이 true일 때 수행할 코드
} else if (조건식2) {
// 조건식2가 true일 때 수행할 코드
} else {
// 조건식 1과 2 모두 false 일 때 수행할 코드
}
첫번째 조건식부터 순서대로 평가하여 참인 조건의 블럭{}
내부의 코드를 실행하고 전체 조건문을 빠져나옴.
if
문 안에 또 다른 if
문을 포함시킬 수 있음.
if (조건식1) {
if (조건식2) {
// 조건식 1과 2 모두 true일 때 수행할 코드
} else {
// 조건식1은 true, 조건식2는 false일 때 수행할 코드
}
} else {
// 조건식1이 false일 때 수행할 코드
}
if
-else if
문으로 처리가 가능하더라도, 조건이 여러개인 조건문은 번거로울 수 있음.
switch
문은 조건식 1개에 대한 결과를 여러가지 경우의 수로 쪼개어 각각의 케이스에 수행할 코드를 지정해줄 수 있음.
switch (조건식) {
case 값1:
// 조건식의 결과가 값1일 때 수행할 코드
break;
case 값2:
// 조건식의 결과가 값2일 때 수행할 코드
break;
case 값3:
// 조건식의 결과가 값3일 때 수행할 코드
break;
// ...
default:
// 조건식의 결과와 일치하는 값이 없을 때 수행할 코드 (기본값)
}
원하는 만큼 case
를 추가할 수 있음
case
마다 코드 마지막에 break
를 걸어주지 않으면, switch
문의 블럭 끝까지 코드를 계속 실행함. (break
를 만나면 멈춤)
default
의 위치는 어디든 상관없으나, 일반적으로 맨 마지막에 작성함.
case
문은 붙여 써도 됨
case 'A': case 'B': case 'C':
// 조건식의 결과값이 'A' 또는 'B' 또는 'C'일 때 수행할 코드
break;
switch
문의 case
안에 또 다른 switch
문을 넣어 중첩 가능.
조건식의 결과값과 각 case
의 값은 정수, 문자열만 허용.
case
문의 값은 상수만 허용. (변수, 실수는 안됨)
JDK 1.7부터는 문자열도 허용됨