조건문 이란?
- 주어진 조건에 따라 다른 실행이 이루어 지도록 구현
- '재산이 1억 이상이면 100만원을 세금으로 낸다 그렇지 않으면 내지 않는다' 를 구현 한다면
- 만약에 (재산이 1억 이상이면){
세금을 100만원 낸다
}
그렇지 않으면 {
세금을 내지 않는다
}
- 만약에 (재산이 1억 이상이면){
- if문 문법
if(조건식){
수행문; // 조건식이 '참'인 경우에(조건에 맞는 경우) 수행문이 수행됨
} // 조건식이 '참'이 아니면(조건에 맞지 않는 경우) 수행문이 수행되지 않음
- if - else 문 문법
if( 조건식) {
수행문1; // 조건식이 '참'인 경우에 수행됨
}
else{
수행문2; // 조건식이 '참'이 아닌 경우에 수행됨
}
package ch14;
import java.util.Scanner;
public class IfElseTest {
public static void main(String[] args) {
int age = 7;
//Scanner scanner = new Scanner(System.in);
//int age = scanner.nextInt();
if( age >= 8) {
System.out.println("학교에 다닙니다");
}
else {
System.out.println("학교에 다니지 않습니다.");
}
}
}
다중 조건문 이란?
- 하나의 상황에 대한 조건이 여러개로 나뉘고 각 조건에 다른 수행이 이루어져야 할 경우 사용
- 각 조건은 상호 배타적임
if(조건식1){
수행문1; // 조건식1이 '참'인 경우 수행하고 전체 조건문을 빠져나감
}
else if(조건식2){
수행문2; // 조건식2이 '참'인 경우 수행하고 전체 조건문을 빠져나감
}
else if(조건식3){
수행문3; // 조건식3이 '참'인 경우 수행하고 전체 조건문을 빠져나감
}
else{
수행문4; // 위 조건이 모두 해당되지 않는 경우 수행됨 (디폴트 조건)
}
수행문5; // if-else if-else 문이 끝나면 수행됨
가령 조건식2가 만족되면 수행문2 -> 수행문5 순으로 수행됨
package ch15;
public class IfElseIfElseTest {
public static void main(String[] args) {
int age = 12;
int charge;
if(age < 8){
charge = 1000;
System.out.println("미 취학 아동입니다.");
}
else if(age < 14){
charge = 2000;
System.out.println("초등학생 입니다.");
}
else if(age < 20){
charge = 2500;
System.out.println("중, 고등학생 입니다.");
}
else{ // 초기화를 시켜주지 않으면 (int charge = 3000; 으로 해도됨) 디폴트값 지정해야함
charge = 3000;
System.out.println("일반인 입니다.");
}
System.out.println("입장료는 " + charge + "원입니다.");
}
}
if-else if 문과 if - if 문의 차이점
- if- else if 를 사용하는 경우 하나의 조건이 만족 되면 나머지 else if 부분은 수행되지 않음
- if - if 로 사용하게 되면 각각 다른 조건 문으로 해석되어 각각 수행하게 됨
- ( 위 예제를 if 로 모두 바꾸어 봅시다.)
package ch15;
public class IfIfTest {
public static void main(String[] args) {
int age = 12;
int charge;
if(age < 8){
charge = 1000;
System.out.println("미 취학 아동입니다.");
}
if(age < 14){
charge = 2000;
System.out.println("초등학생 입니다.");
}
if(age < 20){
charge = 2500;
System.out.println("중, 고등학생 입니다.");
}
else{
charge = 3000;
System.out.println("일반인 입니다.");
}
System.out.println("입장료는 " + charge + "원입니다.");
}
}
switch - case 문
- if - else if - else 문을 사용할 때 복잡하고 번거로운 부분을 가독성 좋게 구현
- 비교 조건이 특정 값이나 문자열인 경우 사용
- break 문을 사용하여 각 조건이 만족되면 switch 블럭을 빠져나오도록 함
- 자바 14부터 좀 더 간결해진 표현식이 지원 됨 ( break 사용하지 않음 )
package ch16;
public class SwitchCaseTest {
public static void main(String[] args) {
int month = 10;
int day;
switch(month){
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
day = 31;
break;
case 4: case 6: case 9: case 11:
day = 30;
break;
case 2:
day = 28;
break;
default:
day = 0;
System.out.println("존재하지 않는 달 입니다.");
}
System.out.println(month + "월은 " + day + "일입니다.");
}
}
문자열 지원되는 switch - case 문
package ch16;
public class SwitchCaseTest2 {
public static void main(String[] args) {
String medal = "Gold";
switch(medal) {
case "Gold":
System.out.println("금메달 입니다.");
break;
case "Silver":
System.out.println("은메달 입니다.");
break;
case "Bronze":
System.out.println("동메달 입니다.");
break;
default:
System.out.println("메달이 없습니다.");
break;
}
}
}
Java 14 부터 지원 되는 Switch Expression
- 간단하게 쉼표(,)로 조건 구분
- 식으로 표현 하여 반환 값을 받을 수 있음. 리턴 값이 없는 경우는 오류가 생김
- yield 키워드 사용
package ch16;
public class SwitchCaseUpTest {
public static void main(String[] args) {
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 + "일입니다.");
}
}
=================================
한 달은 31일입니다.
3월은 31일입니다.
'|Backend.DevLog > JAVA' 카테고리의 다른 글
10. Java 반복문 - 중첩 반복문, break, continue (0) | 2022.06.29 |
---|---|
09. Java 반복문 - while, for 문 (0) | 2022.06.28 |
07. Java 연산자-3 (조건 연산자, 비트 연산자) (0) | 2022.06.23 |
06. Java 연산자-2 (관계, 논리 연산자) (0) | 2022.06.23 |
05. Java 연산자-1 (대입, 부호, 산술, 복합대입, 증감연산자) (0) | 2022.06.21 |
댓글