비버놀로지

[JAVA] 조건문 - if, switch 본문

LANGUAGE STUDY/JAVA

[JAVA] 조건문 - if, switch

KUNDUZ 2021. 3. 25. 22:59
728x90

▶제어문이란?

코드의 실행흐름이 무조건 위에서 아래로 한 문장씩 순차적으로 진행되었찌만 때로는 조건에 따라서 문장을 건너뛰고, 때로는 같은 문장을 반복해서 수행해야할 떄가 있다.

이처럼 프로그램의 흐름을 바꾸는 역할을 하는 문장들을 제어문이라고한다.

 

1. 조건문 - if, switch

조건문은 조건식과 문장을 포함하는 블럭 {}으로 구성되어 있으며, 조건식의 연산결과에  따라 실행할 문장이 달라져서 프로그램의 실행흐름을 변경할 수 있다.

 

(1)if문

if문은 가장 기초적인 조건문이며, 구성은 아래와 같다.

 

if (조건식) {

조건식이 참(true)일 때 수행될 문장을 적는다.

}

else if(조건식){

위의 조건이 거짓(false)이고, 현재 조건식이 참(true)일 때 수행 될 문장이다.

}

else{

위의 모든 조건식이 참이 아닌 경우 수행될 문장을 적는다.

}

 

조건식에는 보통 논리 연산자, 비교 연산자가 주로들어간다.

if와 함께 따라다니는 else문이있는데 if의 조건이 true가 아닌 경우에

else문을 시행한다. if문은 독립적으로도 사용할 수도있다. 다음 예시를 보자. 

 

public class chapter4_if_switch {
	public static void main(String[] args) {
		String a= "true";
		int num=10;
		char c='T';
		
		if(a.equals("true")) {
			System.out.println("true입니다.");
		}else if(a.equals("false")) {
			System.out.println("false입니다.");
		}else {
			System.out.println("둘다 아닙니다.");
		}
		if(num>10) {
			System.out.println("10보다 큽니다.");
		}else if(num==10) {
			System.out.println("10과 같습니다.");
		}else {
			System.out.println("10보다 작습니다.");
		}
		if(c>'A'&&c<'Z') {
			System.out.println("A와 Z사이에 있습니다.");
		}else {
			System.out.println("A와 Z사이에 없습니다.");
		}
	}
}

 

위의 코드를 보면 쉽게 이해할 수 있다. 특히 if문의 수행될 문장이 한줄인경우 블럭을{ } 생략할 수 있다. 그리고 블럭 내 문장은 tab을 통해 들여씌기를 해서 가독성을 높여주는 것이 좋다.

 

위와 같이 if를 활용해서 다양하게 표현 할 수 있다. 그리고 else if의 경우 여러개를 쓸 수 있다.

 

결과가 참인 조건식을 만날 떄까지 첫 번쨰 조건식부터 순서대로 평가한다.

그리고 참인 조건식을 만나면 , 해당 블럭의 내용을 수행하고 if문 전체를 빠져나온다.

 

 

(2) switch문

if문은 존건식의 결과가 참과 거짓, 두 가지 밖에 없기 때문에 경우의 수가 많아질수록 else-if를 계속 추가해야하므로 조건식이 많아져서 복잡해지고, 여러 개의 조건식을 계산 해야하므로 처리시간도 많이 걸린다. 이러한 if문과 달리 switch문은 단 하나의 조건식으로 많은 경우의 수를 처리할 수 있고, 표현도 간결하므로 알아보기 쉽다. 다만 switch문은 제약조건이 있기 때문에, 경우의 수가 많아도 어쩔 수 없이 if을 작성해야 하는 경우가 있다.

 

shich문은 다음과 같은 순서로 실행이된다.

① 조건식을 계산한다.

② 조건식의 결과와 일치하는 case문으로 이동한다.

③ 이후의 문장들을 수행한다.

④ break문이나 switch문의 끝을 만나면 switch문 전체를 빠져나간다.

 

 swich문에는 default문이 있는데 if문의 else와 그역할이 같다고 보면 된다.

 

import java.util.Scanner;

public class chapter4_if_switch {
	public static void main(String[] args) {
    Scanner sc= new Scanner(System.in);
		int number=sc.nextInt();
		switch(number) {
		case 0:
			System.out.println(number+"이 입력됬습니다.");
			break;
		case 1:
			System.out.println("케이스 1");
			System.out.println(number+"이 입력됬습니다.");
		case 2:
			System.out.println("케이스 2");
			System.out.println(number+"이 입력됬습니다.");
		case 3:
			System.out.println("케이스 3");
			System.out.println(number+"이 입력됬습니다.");
			break;
		case 4:
			System.out.println("케이스 4");
			System.out.println(number+"이 입력됬습니다.");
			break;
		default:
			System.out.println("예외처리");
			System.out.println("해당하는 값이 없을 경우");
			break;
		}
	}
}

스위치의 조건식 위치에는 정수 또는 문자열이 들어가야하며

case문의 값은 정수 상수만 가능하다. 중복되지 또 중복되서는 안된다.

그리고 case문이 끝날떄마다 switch문을 나가게하는 break;를 해줘야한다.

 

 

 

728x90
Comments