지금까지 배운 프로그램은 위에서 아래로 순차적으로 실행되었다. 하지만 실제 프로그램에서는 조건에 따라 다른 코드가 실행되어야 한다. 예를 들어 나이가 18세 이상이면 "성인입니다", 아니면 "미성년자입니다"를 출력해야 한다면 어떻게 해야 할까? 이때 필요한 것이 바로 조건문이다. 자바의 조건문에는 대표적으로 if, else if, else, switch, 그리고 삼항 연산자가 있다.
if문과 else문
기본 if문
int age = 20;
if (age >= 18) {
System.out.println("성인입니다.");
}
if (age < 18) {
System.out.println("미성년자입니다.");
}
- 조건식이 true일 때만 코드 블록을 실행한다.
- 조건식은 반드시 boolean 값을 반환해야 한다.
이 코드의 단점은 아래와 같다.
1. 불필요한 조건 검사: 이미 조건을 만족해도 불필요한 다음 조건을 검사한다.
2. 낮은 코드 효율성: 두 if문은 조건이 겹치지 않는다. 스위치처럼 작동한다는 말이다. 결과적으로 조건을 중복 체크한 셈이다.
이런 코드에는 if-else문을 사용함으로써 코드를 개선할 수 있다.
if-else문
if (age >= 18) {
System.out.println("성인입니다.");
} else {
System.out.println("미성년자입니다.");
}
조건이 두 가지 경우로만 나뉠 때 사용한다.
else if문
조건이 3개 이상일 때 else if를 사용하면 효율적이다.
int age = 14;
if (age <= 7) {
System.out.println("미취학");
} else if (age <= 13) {
System.out.println("초등학생");
} else if (age <= 16) {
System.out.println("중학생");
} else if (age <= 19) {
System.out.println("고등학생");
} else {
System.out.println("성인");
}
- 앞선 조건을 만족하면 이후 조건은 검사하지 않는다.
- 따라서 효율적이고, 중복 검사를 피할 수 있다.
if와 else if는 연관된 조건에서 사용해야 하고, 독립 조건은 각각 if로 분리해야 한다.
독립 if vs else if
// 독립 조건
if (price >= 10000) {
discount += 1000;
}
if (age <= 10) {
discount += 1000;
}
두 조건을 모두 만족하면 둘 다 실행된다.
// 연관 조건
if (price >= 10000) {
discount += 1000;
} else if (age <= 10) {
discount += 1000;
}
첫 조건만 만족하면 나머지는 무시된다.
switch문
특정 값에 따라 분기할 때는 switch문을 사용한다.
int grade = 2;
int coupon;
switch (grade) {
case 1:
coupon = 1000;
break;
case 2:
case 3:
coupon = 3000;
break;
default:
coupon = 500;
break;
}
System.out.println("발급받은 쿠폰 " + coupon);
- 이때 주의해야 할 점은, 각 case마다 독립적으로 실행되게 하고 싶다면 break문이 있어야 한다는 것이다.
- 만약 case 2와 같이 break문이 생략된다면 case 3가 실행되면서 coupon의 값은 3000이 된다.
- switch문은 if문보다 조금 덜 복잡한 것 같지만, 그래도 코드가 기대보다 깔끔하게 나오진 않는다.
- if문은 범위 조건을 판단할 때 사용하고,
- switch문은 값 조건을 판단할 때 사용하자.
- 이런 문제를 해결하고자 새로운 switch문이 정식 도입되었다.
int grade = 2;
int coupon;
switch (grade) {
case 1 -> coupon = 1000;
case 2, 3 -> coupon = 3000;
default -> coupon = 500;
}
System.out.println("발급받은 쿠폰 " + coupon);
자바 14부터 도입된 새로운 switch문은 ->(화살표) 문법과 값을 반환하는 기능을 지원해 훨씬 간결해졌다.
삼항 연산자
(조건) ? (참일_때_값) : (거짓일_때_값)
- 조건에 따라 단순히 값을 선택할 때 유용하다.
- 자바에서 유일하게 항이 3개인 연산자여서 삼항 연산자이다.
- 특정 조건에 따라 결과가 나오기 때문에 조건 연산자라고도 한다.
- 조건이 참이면 콜론 앞의 표현식이 실행되고,
- 조건이 거짓이면 콜론 뒤의 표현식이 실행된다.
- 이때 표현식은 단순하게 구성된다. (if문 처럼 코드 블럭을 넣을 수는 없다)
int age = 18;
String status = (age >= 18) ? "성인" : "미성년자";
System.out.println(status);
정리하자면...
- if / else if / else → 조건 분기
- 독립 if vs else if → 상황에 따라 적절히 선택하자.
- switch문 → 특정 값 분기 시 깔끔하다.
- 삼항 연산자 → 단순 조건 처리에 유용하다.
- 가독성과 유지보수를 위해 괄호 {}는 항상 쓰는 습관을 들이는 것이 좋다.
조건문은 프로그램의 흐름 제어에 핵심이 되는 문법이다.
단순히 암기하는 게 아니라, 상황에 맞는 조건문 선택이 중요하다.
'java' 카테고리의 다른 글
| Java 스코프(Scope)와 형변환(Type Casting) 정리 (0) | 2025.09.09 |
|---|---|
| Java 반복문(Loop) 정리 (0) | 2025.09.09 |
| Java 연산자(Operator) 정리 (0) | 2025.09.08 |
| Java 변수(Variable) 정리 (0) | 2025.09.08 |
| Java 기초부터 실행 원리까지 (0) | 2025.09.08 |