➡️ 프로그램의 흐름을 바꾸는 역할을 하는 문장
1. 조건문(if, switch)
2. 반목문(for, while)
조건문은 if문과 switch문 두 가지가 있다.
주로 사용하는 것은 if문이며, 경우의 수가 많다면 if문보다 switch문이 효율적이다.
➡️ 만약 조건식이 참이라면 {}안의 문장들을 수행하라
int age; if(age >= 20){ System.out.println("성인입니다."); }
🔸if문의 단점
if문은 조건식의 결과가 참, 거짓 2가지 밖에 없기 때문에 경우의 수가 많아진다면 조건식이 많아지므로 복잡해지고 처리시간도 오래 걸린다.
if(조건식){
조건식이 참일 경우 수행될 문장
} else{
조건식이 거짓일 경우 수행될 문장
}if(age >= 20){ System.out.println("성인입니다."); }else{ System.out.println("미성년자입니다."); }
여러개의 조건식을 사용해야 할 경우 사용한다.
if(조건식1){
조건식1이 참일 경우 수행할 문장
} else if(조건식2){
조건식2가 참일 경우 수행할 문장
} else{
모든 조건식이 거짓일 경우 수행될 문장(생략가능함)
}if(age >= 8 && age =< 13){ System.out.println("초등학생입니다."); }else if(age <= 16){ System.out.println("중학생입니다."); }else if(age <= 19){ System.out.println("고등학생입니다."); }else{ System.out.println("성인입니다."); }
if문 블럭 내에 또 다른 if문을 포함하는 것이 가능하며, 중첩은 횟수에 제한이 없다.
if(score >= 90){ grade = 'A'; if(score >=98){ opt = '+'; }else if(score <= 94){ opt = '-'; } }else if(score >= 80){ ... }else{ grade = 'C'; } System.out.printf("학점은 %c%c입니다.%n", grade, opt);
switch(조건식){ case 1 : case1의 수행문들 break; case 2 : case2의 수행문들 break; ... default : 조건식의 결과와 일치하는 case문이 없을 경우의 수행문 }
🔸 장점
단 하나의 조건식으로 간결하게 많은 경우의 수를 처리할 수 있다.
🔸 연산 처리 과정
1. 조건식을 계산
2. 계산 결과와 일치하는 case문으로 이동
(조건식의 결과와 일치하는 case문이 하나도 없다면 default문으로 이동한다.)
3. 해당 case문 아래에 있는 문장들을 수행
4. 3을 수행하는 도중 break문을 만나면 switch문 전체를 빠져나옴
(break문이 없다면 계속해서 switch문 끝까지 내려간다.)
🔸 제약조건
1. 조건식의 결과값과 case문의 값은 반드시 정수이어야 한다.
2. case문의 값은 중복되면 안되고, 반드시 상수이어야 한다.(변수, 실수, 문자열 불가능)switch(month){ case 3: case 4: case 5: System.out.println("현재 계절은 봄입니다."); case 6: case 7: case 8: System.out.println("현재 계절은 여름입니다."); case 9: case 10: case 12: System.out.println("현재 계절은 가을입니다."); // case 1: case 2: case 3: default : System.out.println("현재 계절은 겨울입니다."); }