Language/Java

[Java] 조건문

by Donghwan 2021. 11. 5.

if

if문은 가장 기본적인 조건문이며, 조건식과 괄호로 이루어져 있습니다. if문에 사용되는 조건식은 일반적으로 비교연산자와 논리연산자로 구성됩니다. 만약 실행할 문장이 하나뿐이라면 괄호를 사용하지 않고 바로 사용할 수 있습니다. if문은 단일로 if만 사용하거나, if-else로 참일 경우와 거짓일 경우에 사용하거나 if-elseif-else로 여러 조건을 필터링 할 수 있습니다. 하지만 여러 조건을 적용하는 경우 if를 사용하는 것 보다 switch-case가 더욱 적합할 수 있습니다.

if문
if (조건문)
    //true일 경우 실행

if (조건문) {
    //true일 경우 실행
}
if-else문
if(조건문) {
    //true인 경우에 실행
} else {
    //false인 경우에 실행
}
if-else if-else문
if (조건문1) {
    //조거문1이 true일 경우 실행
} else if (조건문2) {
    //조건문2가 true일 경우 실행
} else {
    //조건문1과 조건문2를 모두 만족하지 않을 경우 실행
}​

가장 많이 사용되는 예제는 학점에 관한 예제입니다. 학점에 대한 예제로 알아보도록 하겠습니다. if문을 사용할 때, 참일 확률이 높은 조건문을 앞쪽에 위치시키거나, 큰 값을 먼저 위치시켜야 합니다. 이유는 조건문이 참인 경우 뒤의 조건문은 실행하지 않고 종료하기 때문입니다. 또 아래 예제에서 앞에 60이 위치한다면 점수가 100점이어도 D 학점이 됩니다.

public void checkGrade(int score) {
    if (score >= 90) {
        System.out.println("A");
    } else if (score >= 80) {
        System.out.println("B");
    } else if (score >= 70) {
        System.out.println("C");
    } else if (score >= 60) {
        System.out.println("D");
    } else {
        System.out.println("F");
    }
}

 

Switch

if문은 조건식의 결과가 참과 거짓으로 이루어지기 때문에 경우의 수가 많아질수록 else if를 추가해야 합니다. 따라서 복잡하고 처리시간도 많이 걸리게 됩니다. 이러한 경우 switch-case를 이용하는 것이 좋습니다. 다만 switch는 제약조건이 있기 때문에, 경우의 수가 많아도 어쩔 수 없이 if문으로 처리해야 하는 경우가 있습니다.

switch(조건식) {
    case 값1:
        //조건식과 값1이 같을 경우 수행될 문장
        break;
    case 값2:
        //조건식과 값2이 같을 경우 수행될 문장
        break;
    case 값3:
        //조건식과 값2이 같을 경우 수행될 문장
        break;
    default:
        //조건식과 일치하는 case문이 없을 때 수행될 문장
}

switch문은 break를 해주지 않으면 조건을 만족하는 case부터 break를 만나거나 switch가 끝날 때까지 모든 문장이 실행될 수 있기 때문에 주의해야 합니다. 하지만 아래와 같은 경우 일부러 break를 생략하기도 합니다.

switch(level) {
    case 3:
        grantDelete();
    case 2:
        grantWrite();
    case 1:
        grantRead();
}

위 코드는 레벨에 따라 권한을 부여하는 로직입니다. 위와 같은 상황은 level보다 낮은 모든 권한을 가져야하기 때문에 이런 경우 break를 생략하곤 합니다.

switch문의 제약 조건
1. switch문의 조건식 결과는 정수 또는 문자열이어야 합니다.
2. case문의 값은 정수와 상수만 가능하며 중복되지 않아야 합니다.

 


728x90
반응형

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

[Java] Collection - (1) Collection Framework란?  (0) 2021.11.12
[Java] 반복문  (0) 2021.11.06
[Java] Arrays 클래스  (0) 2021.11.02
[Java] String과 String Pool  (0) 2021.11.01
[Java] String의 불변성( Immutable )  (0) 2021.11.01

댓글