Java 조건문

Chunbae·2024년 10월 3일
1

Java

목록 보기
3/11

오늘은 Java의 조건문을 정리해볼려고 합니다.
Java의 대표적 조건문으로는 다양한 프로그래밍 언어에도 있는 if문과 swtich문을 다룰 예정입니다.

IF문

서두에서 말한것 처럼 다양한 프로그래밍 언어에 있는 대표적 조건문인 IF문 입니다. 언어마다 사용하는 방법은 다르겠지만 반환값은 거의 유사 한것으로 알고있습니다. "참"이냐 "거짓"이냐로 조건을 수행하는 문법이다 보니 뭐 크게 다를게 없다고 생각합니다.

구분

IF문은 구조에 따라 3가지로 나눠서 사용합니다.
종류는 if, if - else, if - else if가 있습니다.

  • if문은 어떠한 조건이 충족한 경우에만 사용을 하고
  • if else문은 조건을 충족하지 못한경우에도 다른 로직을 수행하고 싶을떄 사용되고
  • if else if문은 첫번째 if문의 조건은 충족하지 못했지만 다른 조건을 부여하여 로직을 수행할떄 사용됩니다.
//if
if(조건문) {
	true인 경우 수행블록
}

//if else
if(조건문){
	true인 경우 수행블록
}else {
	if문이 false인 경우 수행블록
}

//if else-if
if(조건문) {
	...
}else if(2번째 조건문){
	2번째 조건이 true인 경우
} else {
	모두 false인 경우
}

if else if문은 계속 증가가 가능하다.

중첩 if문

중첩 IF문은 말그대로 조건이 중첩되어 있는 것이다.
간단한 예를 들면 놀이동산에 갔을때 기구를 탑승하기 위한 조건을 롤러코스터로 예를 들면 "신장 140cm인 초등학교 3학년 이상"이렇게 생긴 유사한 문구를 본적이 있을텐데, 해당 문구가 바로 중첩IF문이다.

첫번째 조건인 신장 140cm이상을 충족하고,
두번째 조건인 초등학교 3학년이상을 충족해야지만 해당 놀이기구를 탑승을 할수 있는것이다.

이제 코드로 예시로 보면

if(1번조건문) {
	if(2번조건문){
    	//2개 모두 true인 경우 수행구문
	}else {
		//1개만 충족한 경우
 }else{
 	1번 조건부터 false인 경우
}

위 코드와 같은 형식으로 코드를 구성하고 계속 중첩이 가능하다. (너무 많이 중첩을 하면 코드의 실행속도도 많이 느려질뿐아니라 코드의 가독성도 떨어지기때문에 중첩은 최소한으로 진행하는 것이 좋다.)

중첩 IF문도 IF문이기 떄문에 If, if else-if모두 사용 가능하다.

if(total >= 140){ // 1
	if(Eng >= 70){ // 2
    	System.out.println("졸업");
    }else if(Eng >= 50{  //3 
    	System.out.println("이수");
	}
} else {  // 4
	System.out.println("졸업 불가");
}

1번 조건 total >= 140을 수행

  • true인 경우 2번으로 이동
  • false인 경우 4번으로 이동

2번조건 Eng>= 70을 수행

  • true인 경우 아래 수행구문 실행
  • false인 경우 3번으로 이동

3번 조건 Eng >= 50을 수행

  • true인 경우 아래 수행구문 실행
  • false인 경우 4번으로 이동

순으로 코드가 동작하는 것을 확인 할수 있다.

Switch문

IF문과 조건문이지만 Switch문은 조건식의 결과가 아닌 주어진 변수에 따라 실행구문을 선택하는 구문이다.

Switch문의 실행 순서는 변수의 값에 따라 case를 비교해 동일한 case를 가진 구문을 실행하고 break문을 만나 조건문을 종료하는 식으로 동작한다.

IF문은 Switch문으로 바꿀수 있고 Switch문도 IF문으로 변경가능하다. 이렇게 조건문이 나눠진 이유는 아래 코드를 보면 쉽게 이해가 될것이다.

  • if문

int grade = 1;
int coupon = 0;

if(grade ==1){
	coupon = 1000;
}else if (grade == 2){
	coupon = 2000;
}else if (grade == 3){
	coupon = 3000;
}else {
	coupon = 500;
}
  • Switch문
int grade = 1;
int coupon = 0;

switch (grade) {
	case 1: //grade = 1인 경우
    	coupon = 1000;
        break; //조건을 충족하면 switch문 종료 
	case 2:
    	coupone = 2000;
        break;
	case 3:
    	coupon = 3000;
        break;
	default: //충족하는 조건이 없는 경우
    	coupon = 500; 
        break;
  }

코드를 살펴보면 if문으로만 봤을때도 어떠한 코드인지 이해는 되지만 뭔가 복잡한 느낌이 든다.
Switch문은 딱봤을때 한눈에 어떤 로직을 수행하는지 알아볼수 있다.

이처럼 두개의 조건문을 사용할때 해당 조건이 어떤 구성을 갖고 있고 어떠한 식으로 동작하는지 알아야 보다 가독성 좋고 실행속도가 빠른 코드를 구성할수 있게된다.

Switch문의 변수로 사용 가능한 것은 byte, short, int, char, String만 가능하다.

새로운 Switch문

자바 14에서 람다식과 결합한 Switch문이 나왔다
간단하게 살펴보면


int grade = 0;

int coupon = switch (grade) {
	case 1 -> 1000;
    case 2 -> 2000;
    case 3 -> 3000;
    default -> 500;
    };

기존 switch문과의 차이점은 break를 사용하지않고, ->를 사용한다는 점과 선택된 데이터를 반환가능하다는 점이다.

profile
말하는 감자

0개의 댓글