자바의 조건문 <if 문, 중첩 if 문, switch~case 문, Switch Expression>

Yeppi's 개발 일기·2022년 4월 29일
0

JAVA

목록 보기
7/27
post-thumbnail

1. 조건문 이란?

주어진 조건에 따라 다른 실행이 이루어 지도록 구현


2. if 문

if 문

    if (조건식) {
      수행문;      // 조건식이 '참'인 경우에(조건에 맞는 경우) 수행문이 수행 
    }             // 조건식이 '참'이 아니면(조건에 맞지 않는 경우) 수행문이 수행되지 않음

if ~ else 문

    if (조건식) {
    
        수행문1;   // 조건식이 '참'인 경우에 수행됨
    }
    else {
    
        수행문2;    // 조건식이 '참'이 아닌 경우에 수행됨
    }

if ~ else if ~ else 문

  • 하나의 상황에 대한 조건이 여러개로 나뉘고, 각 조건에 다른 수행이 이루어져야 할 경우
  • 상호 배타적인 관계
      if (조건식1) {
      
          수행문1;        // 조건식1이 '참'인 경우 수행하고 전체 조건문을 빠져나감
      }
      else if (조건식2) {
      
          수행문2;        // 조건식2이 '참'인 경우 수행하고 전체 조건문을 빠져나감
      }
      else if (조건식3) {
      
          수행문3;        // 조건식3이 '참'인 경우 수행하고 전체 조건문을 빠져나감
      }
      else {
      
          수행문4;        // 위 조건이 모두 해당되지 않는 경우 수행됨 (디폴트 조건)
      }
    
      수행문5;            // if-else if-else 문이 끝나면 수행됨    

🧐 if ~ else if 문 VS if ~ if 문 차이점

  • if ~ else if : 하나의 조건이 만족 되면, 나머지 else if 부분은 수행되지 않음

  • if ~ if : 각각 다른 조건문으로 해석되어, 각각 수행하게 됨



3. switch ~ case 문

특징

  • 가독성이 좋음

  • 비교 조건이 특정 값이나 문자열인 경우

  • break 문 → 각 조건이 만족되면 switch 블럭을 탈출!

  • 자바 14부터 좀 더 간결해진 표현식이 지원 됨 → break 사용하지 않음

📄 예

  • case 'a' 부터 default 실행문까지 순서대로 출력
		char a = 'a';

		switch (a) {
		case 'a':
        	실행문; // a 조건 참인 경우 실행문을 실행
		case 'b':
        	실행문; // b 조건 참인 경우 실행문을 실행
		case 'c':
        	실행문; // c 조건 참인 경우 실행문을 실행
		case 'd':
        	실행문; // d 조건 참인 경우 실행문을 실행
		default:
			System.out.println("존재하지 않습니다");
		}


4. Switch Expression

개념

  • 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일 출력
profile
imaginative and free developer. 백엔드 / UX / DATA / 기획에 관심있지만 고양이는 없는 예비 개발자👋

0개의 댓글