조건문은 프로그래밍에서 특정 조건에 따라 다른 동작을 수행할 수 있게 해주는 필수적인 요소입니다. 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 |