주어진 조건에 따라 다른 실행이 이루어 지도록 구현
if (조건식) {
수행문; // 조건식이 '참'인 경우에(조건에 맞는 경우) 수행문이 수행
} // 조건식이 '참'이 아니면(조건에 맞지 않는 경우) 수행문이 수행되지 않음
if (조건식) {
수행문1; // 조건식이 '참'인 경우에 수행됨
}
else {
수행문2; // 조건식이 '참'이 아닌 경우에 수행됨
}
if (조건식1) {
수행문1; // 조건식1이 '참'인 경우 수행하고 전체 조건문을 빠져나감
}
else if (조건식2) {
수행문2; // 조건식2이 '참'인 경우 수행하고 전체 조건문을 빠져나감
}
else if (조건식3) {
수행문3; // 조건식3이 '참'인 경우 수행하고 전체 조건문을 빠져나감
}
else {
수행문4; // 위 조건이 모두 해당되지 않는 경우 수행됨 (디폴트 조건)
}
수행문5; // if-else if-else 문이 끝나면 수행됨
if ~ else if
: 하나의 조건이 만족 되면, 나머지 else if
부분은 수행되지 않음
if ~ if
: 각각 다른 조건문으로 해석되어, 각각 수행하게 됨
가독성이 좋음
비교 조건이 특정 값이나 문자열인 경우
break
문 → 각 조건이 만족되면 switch
블럭을 탈출!
자바 14부터 좀 더 간결해진 표현식이 지원 됨 → break 사용하지 않음
char a = 'a';
switch (a) {
case 'a':
실행문; // a 조건 참인 경우 실행문을 실행
case 'b':
실행문; // b 조건 참인 경우 실행문을 실행
case 'c':
실행문; // c 조건 참인 경우 실행문을 실행
case 'd':
실행문; // d 조건 참인 경우 실행문을 실행
default:
System.out.println("존재하지 않습니다");
}
Java 14 부터 지원
간단하게 쉼표 ,
로 조건 구분
식으로 표현하여 반환 값을 받을 수 있음
리턴 값이 없는 경우는 오류가 생김
yield
키워드 사용
12 달 중 28, 30, 31일로 끝나는 월별로 switch ~ case
문을 작성한다.
yield 리턴값;
을 꼭 해주어야 한다.
int month = 3;
int day = switch (month) {
case 1, 3, 5, 7, 8, 10,12 -> {
System.out.println("한 달은 31일입니다."); // 출력
yield 31;
}
case 4,6,9,11 -> {
System.out.println("한 달은 30일입니다.");
yield 30;
}
case 2 -> {
System.out.println("한 달은 28일입니다.");
yield 28;
}
default-> {
System.out.println("존재하지 않는 달 입니다.");
yield 0;
}
};
System.out.println(month + "월은 " + day + "일입니다."); // 3월 31일 출력