JAVA/Language

JAVA 조건문 (if, else, switch)

오늘도개발 2022. 8. 15. 17:23

1.  제어문이란?

 제어문이란 특별한 조건에 의해서 순차적으로 진행되는 프로그램의 흐름을 변경하는 것을 의미한다.

 

제어문에는 조건문과 반복문이 있다. (반복문에 대해서는 다음 포스팅에서 설명)

 

2. 조건문

조건문은 if, switch 문이 있으며 조건이 명확하게 정해져 있는 경우 switch문을 사용하고 범위를 지정하는 경우 if 문을 사용한다.

 

if 문은 예상하지 못하는 경우(값)이 참으로 되어 런타임 오류를 일으킬 수 있으므로 범위를 정확하게 규정하는 것이 좋고 확률적으로

 

많이 발생하는 조건을 앞쪽으로 구성하는 것이 좋다.(프로그램 속도 향상)

 

 

 - if 문

 

if 문은 조건이 참이 될 경우 특정 분기점으로 이동하여 명령을 수행하고 다시 원래의 위치로 돌아간다.

 

if(조건식) {

 

참일 경우 실행할 코드

 

}

 

위와 같은 방식으로 사용한다.

 

- if -else 문

 

if 문을 사용하면 조건과 반대 되는 경우를 사용해야하는데 이때 if -else 문을 사용한다. 하지만 단순히 이 경우에

 

if- else 문을 사용하면 가독성은 좋지만 프로그램 속도가 늦어짐으로 단 하나의 조건의 참과 거짓 때의 실행코드를 작성할 때에는

 

삼항연산자를 사용하는 것이 좋다

 

if(조건문) {

 

참인 경우 실행 코드

 

}else{

 

거짓일때 실행 코드

 

}

위와 같은 방식으로 사용한다.

 

이는 result = 조건문 ? 참인 경우 실행 코드 : 거짓일때 실행 코드 ;  로 대신 사용할 수 있다.

 

 

- if - else if 문

 

참인 조건을 여러개로 하고 싶을 때 if-else if문을 사용한다. 이 문장은 첫 번째 조건이 참일 경우 그 다음 조건을 확인하지 않고 

 

바로 else문 이후 문장으로 이동함으로 연속적으로 if 문을 사용하는 것보다 프로그램 동작이 효율적이다.

 

if문을 연속적으로 사용한 경우 첫번째 문장이 참이더라도 2번째 문장이 실행 되기 때문이다.

 

if(조건1){

조건 1이 참일 경우 실행

}else if (조건2){

조건 2가 참일 경우 실행

}else if (조건3){

조건 3이 참일 경우 실행

}  ...

}else if (조건n){

조건 n이 참일 경우 실행

}else{

위의 조건이 모두 해당하지 않을 때 실행

}

 

 

if 문 연속 작성시 실행 구조 

 

 

if - else 문의 원래 구현 방식 if문의 중첩으로 아래와 같지만 가독성이 매우 떨어짐으로 첫번재 방식으로 코드를 작성하는 것이 좋다.

 

 

3.  switch 문

 

위의 if else문과 결과적으로 유사한 모양을 띄고 있지만, 조건문이 1번만 실행되고 그 값을 통해서 여러개의 실행문을 선택적으로 

 

분기 할 수 있는 역할을 한다. 그러므로 적절한 경우에 사용한다면 좀 더 효율적인 코드를 작성 할 수 있다.

 

switch(변수){

case 값1:

실행될 문장

break;

 

case 값2:

실행될 문장

brake;

...

default:

 

* 주의사항

변수의 값은 항상 정수가 되어야 하며  case 이후 오는 값은 정수(소수점 x) 또는 문자(char) 또는 문자열(String)이어야만 한다.

 

break; 문이 실행되면 switch문이 끝나면서 원래의 코드로 복귀하기 때문에 누락하게되면 switch 문이 계속 진행되게 된다.

 

그러므로 break;를 하나도 적지 않는다면 default 까지 다 실행됨으로 주의한다.

 

위의 코드의 break; 문을 응용하면 다음과 같이도 작성할 수 있다.

 

 위와 같이 작성하면 중복된 코드가 줄어듬으로 유지보수가 효율적인 코드가 된다.

 

또한 if -else if 문처럼 발생 확률이 높은 코드를 앞으로 놓을수록 효율적인 프로그램이 된다.

 

 

추가설명 > result가 1 또는 3인 경우 아래와 같은 프로그램 동작 차이가 있다

 

 

'JAVA > Language' 카테고리의 다른 글

JAVA 콜렉션 프레임워크( Collection framework)  (1) 2022.08.26
JAVA Array (배열)  (0) 2022.08.20
JAVA 반복문( for, while, do - while )  (0) 2022.08.15
JAVA 연산자(operator)  (2) 2022.08.15
JAVA 변수(variable) 선언 및 호출  (2) 2022.08.07