JAVA/JAVA 기초

Java에서 조건문(if, switch) 다루기

임베디드 친구 2024. 9. 26. 11:21
반응형

조건문은 프로그래밍에서 특정 조건에 따라 다른 동작을 수행할 수 있게 해주는 필수적인 요소입니다. Java에서는 주로 if, else if, else, 그리고 switch 문을 사용하여 조건문을 작성합니다. 조건문을 잘 활용하면 프로그램의 복잡도를 줄이고, 코드의 가독성과 유지 보수성을 높일 수 있습니다.

1. if, else if, else 문

1.1 기본 사용법

  • if: 가장 기본적인 형태의 조건문으로, 주어진 조건이 참일 경우 아래 코드 블록을 실행합니다.
  • else if: 여러 조건을 고려해야 하는 경우, else if를 사용하여 첫 번째 조건이 거짓일 때 다른 조건을 평가할 수 있습니다.
  • else: 모든 조건이 거짓인 경우 실행할 코드 블록을 정의합니다.
int num = -5;

if (num > 0) {
    System.out.println("양수입니다.");
} else if (num < 0) {
    System.out.println("음수입니다.");
} else {
    System.out.println("0입니다.");
}

위 코드는 변수 num이 양수, 음수 또는 0인지에 따라 출력 결과가 달라집니다.

1.2 else if와 else 생략 가능성

다중 조건 처리가 필요하지 않은 상황이라면 else if 블록을 생략할 수 있습니다. 마찬가지로, 특정 조건이 참일 때만 실행되는 동작이 필요하다면 else 블록도 생략이 가능합니다.

int temperature = 25;

if (temperature > 30) {
    System.out.println("날씨가 덥습니다.");
}

위의 예제에서는 온도가 30도를 넘지 않으면 아무 일도 일어나지 않습니다.

2. 중첩된 조건문

조건문 안에 또 다른 조건문을 추가해서 복잡한 로직을 처리할 수도 있습니다. 이를 중첩 조건문이라고 합니다. 그러나 중첩 조건문이 너무 깊어지면 코드의 가독성이 떨어질 수 있기 때문에 적절한 구조화를 고려해야 합니다.

boolean isAnimal = true;
boolean hasWing = true;

if (isAnimal) {
    if (hasWing) {
        System.out.println("날개가 있는 동물입니다.");
    } else {
        System.out.println("날개가 없는 동물입니다.");
    }
} else {
    System.out.println("동물이 아닙니다.");
}

이 예시는 동물인지 여부와 날개가 있는지 여부에 따라 결과를 다르게 출력합니다.

3. 삼항 연산자

삼항 연산자는 조건문을 간결하게 작성할 수 있는 방법입니다. 다음과 같은 형식을 따릅니다.

조건식 ? 참일 때 값 : 거짓일 때 값;
int age = 20;
String result = (age >= 18) ? "성인" : "미성년자";
System.out.println(result); // "성인"

위 코드는 if-else 조건문을 대체할 수 있으며, 코드가 간결해지는 장점이 있습니다. 다만 가독성 문제가 생길 수 있으므로 복잡한 조건식에는 권장되지 않습니다.

4. switch 문

4.1 기본 사용법

switch 문은 주로 하나의 변수 값에 대해 여러 가지 경우를 처리할 때 유용합니다. 각 case 블록에서 다른 동작을 수행하며, default 블록은 모든 경우에 해당하지 않을 때 실행됩니다.

public static void movie() {
    String movie = "interstellar";
    String theater = ""; 

    switch (movie) {
    case "interstellar":
        theater = "제 1 상영관";
        break;

    case "rambo":
        theater = "제 4 상영관";
        break;

    default:
        theater = "티켓 부스";
        break;
    }

    System.out.println(theater);
}

switch 문은 여러 if-else 조건문을 대체할 수 있어 가독성이 좋습니다. 단, 값이 동일한지 여부만 비교할 수 있기 때문에 조건식이나 범위 비교에는 사용할 수 없습니다.

4.2 Java 12 이후의 switch 표현식

Java 12부터는 switch 문이 좀 더 유연한 표현식으로 확장되었습니다. 새로운 switch 표현식은 반환값을 가지며, yield 키워드를 사용하여 값을 반환할 수 있습니다.

String movie = "interstellar";
String theater = switch (movie) {
    case "interstellar" -> "제 1 상영관";
    case "rambo" -> "제 4 상영관";
    default -> "티켓 부스";
};
System.out.println(theater);

이 구조는 더 간결하며, break 문을 사용하지 않기 때문에 실수를 줄일 수 있습니다.

5. 메서드를 활용한 조건문

조건이 복잡하거나 반복되는 경우 메서드를 사용하여 로직을 분리하는 것이 좋습니다. 이는 코드의 재사용성과 유지 보수성을 높이는 데 도움이 됩니다.

5.1 간단한 조건 분리

class Animal {
    boolean hasWing;
    boolean isCow;
    boolean hasMilk;
}

boolean isFlyingAnimal(Animal animal) {
    return animal.hasWing;
}

boolean isCow(Animal animal) {
    return animal.isCow;
}

boolean hasMilk(Animal animal) {
    return animal.hasMilk;
}

boolean isMilkCow(Animal animal) {
    return !isFlyingAnimal(animal) && isCow(animal) && hasMilk(animal);
}

Animal myCow = new Animal();
myCow.hasWing = false;
myCow.isCow = true;
myCow.hasMilk = true;

if (isMilkCow(myCow)) {
    System.out.println("이 동물은 젖소입니다.");
}

위 예제에서는 여러 메서드를 사용하여 동물이 젖소인지 확인하는 과정을 단순화했습니다. 이를 통해 중첩된 조건문을 피할 수 있으며, 각 조건이 명확하게 구분됩니다.

5.2 메서드 호출 최적화

메서드를 한 번만 호출하는 경우라면 과도한 분리는 비효율적일 수 있지만, 여러 곳에서 동일한 조건을 검사해야 한다면 재사용성을 높일 수 있습니다.

6. 조건문을 간략하게 작성하기

6.1 else 블록 최소화

일반적으로 else 블록을 사용하지 않는 것이 코드 가독성에 도움이 될 수 있습니다. 아래 코드는 else 블록을 사용한 일반적인 예입니다.

boolean isOdd(int num) {
    if (num % 2 != 0) {
        return true;
    } else {
        return false;
    }
}

이를 else 블록 없이 더 간결하게 작성할 수 있습니다.

boolean isOdd(int num) {
    return num % 2 != 0;
}

6.2 다중 조건문 간략화

다중 조건문도 else if를 최소화하여 작성할 수 있습니다.

String getState(int year) {
    if (year < 20) {
        return "소년";
    }
    if (year >= 20 && year < 50) {
        return "청년";
    }
    return "노년";
}

이처럼 각 조건이 참이면 메서드를 종료하도록 하면 코드가 더욱 간결해집니다.

7. 결론

조건문은 프로그래밍에서 빠질 수 없는 중요한 구성 요소입니다. 효율적인 조건문 사용은 코드의 가독성, 유지 보수성, 그리고 실행 성능을 높이는 데 기여합니다. Java에서는 다양한 형태의 조건문을 지원하며, if, else if, else, switch 문을 적절하게 사용함으로써 복잡한 로직도 쉽게 처리할 수 있습니다. 또한, 중복되는 조건을 메서드로 분리하거나, else 블록을 최소화하여 코드의 간결함과 효율성을 높일 수 있습니다. 조건문을 올바르게 사용하면 프로그램의 로직을 더 명확하게 표현할 수 있으며, 이를 통해 복잡한 문제도 쉽게 해결할 수 있습니다.

반응형

'JAVA > JAVA 기초' 카테고리의 다른 글

Java의 클래스(Class)와 객체(Object)  (0) 2024.09.28
Java 반복문  (0) 2024.09.27
Java 연산자 기초와 사용법  (0) 2024.09.25
Java에서 배열(Array) 사용하기  (0) 2024.09.24
JAVA 자료형 및 변수  (0) 2024.09.23