본문 바로가기

언어공부/Java

자바 조건문 - if문 / if-else문 / if-else if문/ switch문

자바 조건문에 대해서 알아보자.

프로그램의 흐름을 바꾸는 역할을 하는 문장들을 제어문이라고 하며, 제어문에는 조건문과 반복문이 있다.

조건문은 조건에 따라 다른 문장이 수행되도록 한다.

if문

if문 구조

if문의 구조는 위와 같으며, 조건이 참(true)이면 괄호 안에 문장들이 실행된다.

조건식이 거짓(false)이면, if문 다음의 문장으로 넘어간다.

 

if문 예제

위의 예제를 보면, if문의 조건이 num<0이므로, num의 값이 -5이므로 if문을 실행하게 된다. 그래서 num=5가 된다. 만약에 num이 num<0가 아니라면, if문을 무시하고 num값이 바로 출력된다.


if-else문

if-else문 구조

if-else문의 구조는 위와 같으며, 기본 if문에 else문이 추가되었다.  else문은 if의 조건식의 값이 참이 아닐 때 실행된다. 조건식의 결과에 따라서 if-else문 둘중 하나만 실행되며, 전체 if-else문을 벗어난다.

 

if-else문 예제

위의 예제를 보면,  if문의 조건이 a>b, 여기서 a=5, b=10로 거짓이므로 if문이 아닌 else문이 실행되어 max=b, min=a로 대입된다. 그래서 최대값=10, 최소값=5가 출력된다. 

 

if문을 두번 사용하는 것 보다, if-else문을 사용하면 하나의 조건식만 계산하면 되므로 더 효율적이다.


if-else if문

if-else if문

if-else if문의 구조는 위와 같으며, 처리해야 할 경우가 많을 때 사용된다. if와 else문 사이에 else if문을 작성하며, else if문은 여러번 작성할 수 있다. 하나의 조건식을 만족하면 해당 문장을 실행하고 if-else if문을 빠져나온다.

 

if-else if문 예제

 

위의 예제를 보면,  if의 조건으로 score>=90이며, 이 조건에 참일경우 grade='A'이다. 만약 해당 조건에 거짓일 경우에는 아래 else if의 조건인 score>=80과 비교한다. 여기서 거짓으로 계속 비교하다가 마지막 else if문 조건 score>=60에도 거짓이라면, else문이 실행되어 grade='F'가 된다.

 

여기서 (80 <= score && score < 90 : 80점 이상 90점 미만)조건이 아닌 (score>=80 :80점 이상)만 준 이유는 위의 if문 조건인 (score>=90:90점 이상)에서 걸러지기 때문이다.


switch문 (switch case문)

switch문

switch문의 구조는 위와 같으며, 조건식은 결과값이 반드시 정수여야 한다. 이 정수값과 일치하는 case문으로 실행되기 때문에 case문 값 역시 정수(only 상수 O, 변수나 실수는 X)여야 하며, 중복되지 않아야 한다. case문 값이 중복되면 중복되는 문장 중 어떤 문장을 실행해야 할지 알 수 없기 때문이다. (jdk 1.7이상 부터는 문자열도 가능해졌다.)

 

정수식과 case문의 값이 일치하면 해당 처리할 문장이 실행되며, 문장 실행 후 break문을 만나면 switch case문을 종료한다. default문은 case문에 해당하지 않는 조건일 때 실행된다. (if-else문에서 else문 느낌이다.)

 

switch문 예제 1

위의 예제를 보면, int형 변수 grade 값이 1이면 최고 관리자, 2이면 중간 관리자, 3이면 사용자가 출력된다. 하지만 여기서 break문이 없기 때문에 만약 grade값이 1이면 최고 관리자, 중간 관리자, 사용자가 다 출력이 된다. 값이 2이면 중간 관리자, 사용자가 출력된다. 이런 상황을 피하기 위해서 break문을 주어 구분할 수 있게 해야 한다. (여기서 default문이 없는 이유는 if-else로 조건을 따로 달아줬기 때문에 1~3사이의 값만 들어가게 된다.)

 

<jdk 1.7이상 부터는 문자열도 가능하다>

 

switch문 예제 2

위의 예제를 보면, char형 변수 gender 값이 '1', '2'일 때는 남자라는 내용이 출력, 값이 '3', '4'일 때는 여자라는 내용이 출력되며 case문 값과 일치하지 않으면 default 문장의 유효하지 않는다는 내용이 출력된다. 여기서 break문이 있기 때문에 '1','2'값이 들어가면 남자라는 내용만 출력된다.

 

switch문 예제 3

위의 예제를 보면, String형 변수 str 값이 "KOREA"일 때는 한국이라는 내용이 출력되며 각각의 케이스에 따라서 해당 문장들이 출력된다. 이 switch문에도 default문이 없는데 case값과 일치하지 않으면 아무런 문장도 실행되지 않는다.