프로그래밍 언어/JAVA

[JAVA] 조건문 if & switch

Rateye 2021. 1. 18. 13:51
728x90
반응형

조건문

  • 특정 조건에 따라 문장의 실행 여부를 결정하는 문

단일 if문

  • 조건식에 따라 특정 문장 실행 여부를 결정하는 기본적인 조건문
  • 조건식 판별 결과가 true 이면 블록( { } ) 문 내의 문장들을 실행하고 조건식 판별 결과가 false 이면 블록 문을 생략함

기본 문법

문장1; 
if(조건식) {
		문장2; // 조건식 판별 결과가 true 일 때 실행할 문장들...
}
문장3;

조건식 판별 결과가 true 일 때 : 문장1 -> 문장2 -> 문장3

조건식 판별 결과가 false 일 때 : 문장1 -> 문장3

if ~ else 문

  • 조건식 판별 결과에 따라 서로 다른 문장을 실행하는 if

    조건식 판별 결과가 true 이면 if 문의 중괄호 블록문{} 을 실행하고 false 이면 else 문의 블록문{} 을 실행

  • 삼항 연산자(조건 연산자)와 동일한 형태의 조건문

    if ~ else 문이 더 상위 조건문

기본 문법

문장1;
if(조건식) {
	문장2; // 조건식 판별 결과가 true 일 때 실행할 문장들...
} else {
	문장3; // 조건식 판별 결과가 false 일 때 실행할 문장들...
} 
문장4;

조건식 판별 결과가 true 일 때 : 문장1 -> 문장2 -> 문장4

조건식 판별 결과가 false 일 때 : 문장1 -> 문장3 -> 문장4

(문장2 와 문장3 은 동시에 실행될 수 없다!)

		System.out.println("프로그램 시작!");
		int num = 3;
		
		if(num > 5) { // num 이 5보다 클 경우
			System.out.println("num 이 5보다 크다!");
		} else { // num 이 5보다 크지 않을 경우(같거나 작을 경우)
			System.out.println("num 이 5보다 크지 않다!");
		}
		
		System.out.println("프로그램 종료!");

if ~ else if ~ else 문(다중 if ~ else 문 또는 if ~ else if 문)

  • 두 가지 이상의 조건식을 차례대로 판별하면서 세 가지 이상의 경우를 판별하는 조건문

기본 문법

if(조건식1) {
 	// 조건식1 의 결과가 true 일 때 실행할 문장들...
 	문장1;
} else if(조건식2) {
	// 조건식1 의 결과가 false 이고, 조건식2 의 결과가 true 일 때 실행할 문장들...
	문장2;
} else if(조건식n) {
	// 조건식 1, 2 의 결과가 false 이고, 조건식n 의 결과가 true 일 때 실행할 문장들...
	문장n;
} else {
	// 모든 조건식의 결과가 false 일 때 실행할 문장들... 
  // (생략 가능)
  문장x;
}
		// 정수 num 이 5보다 크면 "num 이 5보다 크다" 출력하고,
		// 정수 num 이 5보다 작으면 "num 이 5보다 작다" 출력
		// 만약, 둘 다 아닐 경우 "num 이 5와 같다" 출력
		int num = 5;
		
		if(num > 5) {
			System.out.println("num 이 5보다 크다!");
		} else if(num < 5) {
			System.out.println("num 이 5보다 작다!");
		}
		// => 만약, num 이 5일 경우 if 문과 else if 문 모두 실행되지 않음
		
		// num 이 5일 때, if문과 else if문 모두 해당되지 않으면
		// 실행할 문장을 else 문 블록에 기술해야한다!
		if(num > 5) {
			System.out.println("num 이 5보다 크다!");
		} else if(num < 5) {
			System.out.println("num 이 5보다 작다!");
		} else {
			System.out.println("num 은 5이다!");
		}
		
		System.out.println("===========================");
		// 중첩 if문
		// - if문 안에 또 다른 if문이 중첩되는 형태
		//   => 특정 조건을 만족할 때 새로운 if문이 다시 수행되는 문장
		int score = 48;
		String grade = "";
		
		// 점수(score)가 정상범위(0 ~ 100 사이)인지 판별
		if(score >= 0 && score <= 100) { 
			// 점수가 정상 범위일때만 학점 계산
			if(score >= 90) {
				grade = "A";
			} else if(score >= 80) {
				grade = "B";
			} else if(score >= 70) {
				grade = "C";
			} else if(score >= 60) {
				grade = "D";
			} else { // 0 ~ 59 포함됨
				grade = "F";
			} 
			
			System.out.println(score + "점의 학점 : " + grade);
		} else {
			// 0 ~ 100 사이의 점수가 아니면 학점 계산 실행되지 않음
			System.out.println(score + " : 점수 입력 오류!");
		}

switch ~ case 문

  • if문과 달리 조건식이 정수 값, 문자열, Enum 상수 중 하나의 결과가 와야 한다.

  • case 문에는 조건식 판별 결과와 비교할 값을 사용하며 범위 지정이 불가능하고, 값만 사용 가능

    조건식 결과와 일치하는 case 문의 : 뒤에 있는 문장들을 차례대로 실행

  • case 문의 값은 중복될 수 없으며, 순서는 상관없다

  • case 문 실행 후 break 문을 사용하여 switch ~ case 문을 빠져나갈 수 있으며, break 문이 없을 경우에는 조건과 상관없이 다음 case 문 또는 default 문을 모두 실행함(break 문을 만나거나 switch ~ case 문이 끝날 때까지 실행)

  • default 문은 if 문의 else 문과 동일한 역할을 수행하며 일치하는 case 문이 없을 경우 default 문을 실행(default 문은 생략 가능)

  • if문은 실행 시점에서 조건을 판별하여 실행할 문장이 결정되지만, switch ~ case 문은 번역 시점에 실행할 문장이 결정되므로 실행 속도가 if문보다 빠름

  • if문과 유사하게 조건에 따른 실행 문장을 달리하는 조건문

  • if문이 switch ~ case 문보다 유연하므로 switch ~ case 문은 if문으로 100% 전환이 가능하지만 if문은 switch ~ case 문으로 전환이 불가능할 수 있다.

기본 문법

switch(조건식) {
 		case 값1 : 
 				// 조건식 결과가 값1 과 일치할 경우 실행할 문장들...
				[break;]
 		case 값n : 
				// 조건식 결과가 값n 과 일치할 경우 실행할 문장들...
				[break;]
		[default : // 일치하는 case 문이 없을 경우 실행할 문장들... ]
 }
728x90
반응형