Java/[inflearn] 자바 입문

[김영한_자바입문][4. 함수] if / switch 사용 이해하기(p.11-12)

줌인. 2024. 1. 20. 16:50
요약하면, if-else 문은 다양한 조건을 처리하는 데 유연하고,
switch 문은 옵션 출력 처럼 변수의 값에 따라 여러 경우 중 하나를 선택하는 경우 효과적이고,
switch 표현식은 특히 값 할당과 관련된 간단한 로직에서 간결하고 표현력 있는 방법을 제공한다.




[if문 사용 특징] 범위 기반 조건 검사, 복잡한 조건(여러 조건 동시 진행)

public static void main(String[] args) {
    int score = 85;

    if (score >= 90) {
        // A grade
    } else if (score >= 80) {
        // B grade
    } else if (score >= 70) {
        // C grade
    } else {
        // Below C grade
    }
}

* 용도: if 문은 참/거짓 유무를 확인해 특정 블록을 실행한다. 주로 범위나 조건이 복잡한 경우에 사용됩니다.
* 특징: 여러 조건을 동시에 검사, 범위 기반의 조건을 검사한다. 또한, 각 조건이 서로 독립적일 때 사용합니다.

 

[switch문 사용 특징] 값의 일치 여부 확인, 열거형, 변수 값에 따른 동작 실행

public static void main(String[] args) {
    switch (변수) {
        case 1:
            // 값1에 대한 동작 실행
            break;
        case 2:
            // 값2에 대한 동작 실행
            break;
        default:
            // 모든 case에 해당하지 않을 때 실행
            break;
    }

}

* 용도: switch 문은 변수 값을 기반으로 경우 중 하나에 해당하는 블록을 실행한다.

            주로 변수의 값에 따라 다양한 동작을 수행할 때 사용된다.
* 특징: switch 문은 값의 일치 여부를 확인하며, 상수 또는 열거형을 사용하는 경우에 더 적절하다.

 

== 하기 참고 ==

 

[p.11 / If문 사용] 조건에 따른 동작 실행

public static void main(String[] args) {
    int grade = 2;

    int coupon; // 조건에 따라 coupon값이 동적으로 바뀔 수 있다고 판단되어 단순 선언 (초기화x)
    if (grade == 1) {
        coupon = 1000;
    } else if (grade == 2) {
        coupon = 2000;
    } else if (grade == 3) {
        coupon = 3000;
    } else {
        coupon = 500;
    }

    System.out.println("발급받은 쿠폰 : " + coupon);
}

* 구조: 여러 조건을 확인하기 위해 if-else 문을 사용한다.
* 유연성: 다양한 조건을 처리할 수 있지만 코드가 길어질 수 있다.
* 실행 흐름: 조건이 충족되면 해당 블록을 실행하고 전체 구조를 빠져나온다.

 

[p.12 / switch문 사용] grade 변수에 (일치) 따른 단순 동작 실행 --> ex) option값

public static void main(String[] args) {
    int grade = 2;

    int coupon;
    switch (grade) {
        case 1 :
            coupon = 1000;
            break; //조건처럼 break가 걸리면 빠져나와서 실행된다고 생각하면 된다.
        case 2 :
            coupon = 2000;
            break;
        case 3 :
            coupon = 3000;
            break;
        default :
            coupon = 500;
    }

    System.out.println("발급받은 쿠폰 : " + coupon);
}

* 구조: grade 변수의 값에 따라 다양한 조건을 처리하기 위해 switch 문을 사용한다.
* Fallthrough: 각 case 블록 뒤에 break 문이 있어 fallthrough(다음 값으로 넘어가는 것)를 방지한다.
* 가독성: 같은 변수를 확인할 때 일반적으로 if-else 문보다 간결하다.

 

[p.14 / 새로운 switch문 사용] switch 변수안에 케이스 예시, int coupon 변수에 담을 리터럴을 화살표 다음에 입력

public static void main(String[] args) {
    int grade = 2;

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

    System.out.println("발급받은 쿠폰 : " + coupon);
}

* 구조: Java 12에서 도입된 새로운 switch 표현식이다.
* 간결성: 특히 값 할당과 관련된 간단한 로직의 경우 더 간결한 구문을 제공한다.
* 표현식: switch 표현식은 직접 값을 생성하여 할당할 수 있으며, 변수를 선언할 필요가 없다.

                ( ex) coupon = 1000;이다.)

 

if 문은 조건에 따라 코드의 특정 부분을 실행하거나 건너뛰는 것이며,
switch 문은 변수의 값에 따라 다른 코드 블록을 실행하는 것입니다.

 

 

 

"다시 정리하자면"

1. if문은 단독, 연립, 복잡한 조건식을 효과적으로 다룰 수 있다.

    이를 통해 다양한 상황에 대한 분기를 처리할 수 있습니다.

 

2. Switch문은 주로 다양한 경우에 대한 분기를 처리할 때 사용된다. 

    특히 변수의 값에 따라 여러 경우 중 하나를 선택하는 경우에 효과적이다.

    Switch문은 각 case에서의 값을 확인하여 해당하는 동작을 수행하고, break 문으로 빠져나간다.

 

(추가적으로)
3. 삼항 연산자는 주로 이분법적인 사고로, "a가 맞다/아니다"와 같이 간단한 조건을 처리할 때 효과적이다.

    삼항 연산자는 if-else 문을 간단하게 표현할 때 사용되며, 코드를 간결하게 만들 수 있다.


나만의 방법으로 정리하자면
if문은 a는 20이면 성인이고, 아니면 미성년자다와 같은 단독/연립/복잡한 조건식으로 사용되고,
삼항연산자 a는 a가 맞다/아니다 이렇게 이분법적인 사고로 연결되고,
끝으로 switch문a는 단순히 a,b,c,d,e중에 a다로 연결된다.

728x90