보통 프로그램은 개발자가 작성한 순서대로 차례로 실행되지만 경우에 따라서는 조건에 따라 다른 부분을 실행하거나 반복하여 실행하는 등 실행 순서를 바꾸어 동작하기도 합니다.

다양한 종류가 있지만 그 중에서 조건문(Conditional Statement)이 있으며, 이 조건문은 주어진 조건에 따라 수행되는 부분이 다를 때 사용하는 방식으로 if문switch문이 존재합니다.

if문

if라는 것은 영어 단어를 공부하신 분들은 아시겠지만 만약 ~ 라면이라는 의미를 뜻합니다.

이 의미에서 생각하자면 만약 ~ 라면 A를 실행하고 그게 아니면 B를 실행해라 라는 것으로 추측할 수 있습니다.

if 문의 형태는 지정어 if가 나오고 조건식이 나타나며, 만약 조건식이 참일 때, 실행할 문장이 그 다음에 나옵니다. 조건식이 거짓일 경우 참 부분은 실행되지 않습니다.

주의할 점은 조건식의 연산 결과는 항상 true나 false 값이어야 합니다.

여기에 추가적으로 else 부분이 있는 if문이 있습니다.

이 부분은 예를 들어 설명하겠습니다.

if(math>=90){
	System.out.println("합격");
} else {
	System.out.println("불합격");
}

조건식인 math>=90일 경우, 합격을 출력하며, 그게 아니면 불합격을 출력하는 프로그램입니다. 여기서 조건식이 거짓일 경우, 실행하는 부분이 else 부분입니다.

또한, if 문의 형태에서 실행되는 문장이 여러 개일 경우, 아래와 같이 블록으로 표시하고 문장이 한 줄일 경우, 블록 표시를 생략할 수 있습니다.

// 실행되는 문장이 여러 개일 경우, { } 표시
if(x > y){
	System.out.println("문장1");
    System.out.println("문장2");
    System.out.println("문장3");
}

// 실행되는 문장이 한 줄일 경우, { } 표시 생략 가능
if(x > y)
	System.out.println("문장1");

그리고 또 다른 if 문의 형태가 존재합니다.

바로 아래와 같은 코드 같은 형태입니다.

if(eng >= 90){
	System.out.println("90점 이상");
} else if(eng >= 80){
	System.out.println("90점 미만, 80점 이상");
} else if(eng >= 70){
	System.out.println("80점 미만, 70점 이상");
} else if(eng >= 60){
	System.out.println("70점 미만, 60점 이상");
} else {
	System.out.println("?");
}

하나의 상황에서 여러 개의 조건이 존재할 경우, 각 조건에 따라 다르게 수행하는 역할을 하는 if - else if - else 가 존재합니다.

만약, eng가 97일 경우, 90점 이상을 출력하고, 85일 경우, 90점 미만, 80점 이상을 출력하고 if 문 밖으로 이동합니다. 이 과정 중에서 if 문의 여러 개의 조건식이 거짓이면, 맨 끝에 있는 else 다음의 문장인 ?이 실행됩니다.

switch문

switch 문은 단순하게 if - else if - else 문을 단순하고 간결하게 표현할 수 있도록 구현한 것입니다.

어떤 형태인지 바로 살펴보겠습니다.

switch(day) {
	case 1: 
    	System.out.println("Sun");
        break;
    case 2: 
    	System.out.println("Mon");
        break;
    case 3: 
    	System.out.println("Tue");
        break;
    case 4: 
    	System.out.println("Wed");
        break;
    case 5: 
    	System.out.println("Thu");
        break;
    case 6: 
    	System.out.println("Fri");
        break;
    case 7: 
    	System.out.println("Sat");
        break;
    default:
    	System.out.println("Error!!");                              
}

switch 문 옆에 있는 과 case 다음에 나타나는 들을 비교하면서 두 값이 서로 같으면 문장을 실행합니다.
값들은 정수나 문자, 문자열 등 가능합니다.

여기서 일치하는 것이 없다면 default에 있는 문장을 실행합니다.

주의할 점은 식과 상수식이 같은 곳에 있는 문장부터 순차적으로 계속 실행되기 때문에 break 문을 이용하여 switch 문 밖으로 이동하여야 합니다.

자바 14에서부터 지원되는 switch문 형태

  • 간결하게 쉼표(,)로 조건을 구분
  • 식으로 표현하여 값을 반환받을 수 있으며, 리턴 값이 없으면 오류 발생
  • yield 키워드

ex)

int day = switch(month) { // 식으로 되어 있기 때문에 값을 반환받아 변수 day에 저장
	case 1, 3, 5, 7, 8, 10, 12 -> { // 쉼표(,)로 조건을 구분하며, 람다식을 사용
    	System.out.println("31일");
        yield 31; // switch 문에서 반환 값을 얻기 위해 yield 키워드 사용(메서드에서 return과 비슷)
    }
    case 4, 6, 9, 11 -> {
    	System.out.println("30일");
        yield 30;
    }
    case 2 -> {
    	System.out.println("28일");
        yield 28;
    }
    default -> {
    	System.out.println("Error!!");
        yield 0;
    }
}; // 값을 반환받기 위해 문장의 끝 표현(세미콜론)

자바 14에서부터 지원되는 switch 문에서는 위와 같이 훨씬 더 간결하게 표현할 수 있습니다.
또한, break 문도 사용하지 않아도 된다는 것을 알 수 있습니다.

이상 자바 조건문에 대해서 간단하게 알아봤습니다.

profile
꾸준함으로 성장하는 개발자 지망생

0개의 댓글