if
💡else-if
- if-then-else 구조는 여러 조건을 순차적으로 평가하며, 첫 번째로 true인 조건의 블록만 실행됩니다. 따라서 이후의 else if 조건들은 평가되지 않아 중복 체크를 피할 수 있습니다. 이는 효율적인 조건 분기 구조를 제공합니다. 1
The if-then-else statement provides a secondary path of execution when an 'if' clause evaluates to false.
- 서로 독립적인 조건을 처리해야 할 경우, if-else 대신 별도의 if 문을 사용하는 것이 더 적절할 수 있습니다. 이는 각 조건이 서로 영향을 주지 않고 독립적으로 평가되도록 합니다.
✅ 예제
int temp = 35;
boolean isRaining = true;
boolean isWindy = true;
if (temp > 30) {
System.out.println("🔥 폭염주의 알림 발송");
}
if (isRaining) {
System.out.println("☔ 우산 챙기세요 알림 발송");
}
if (isWindy) {
System.out.println("💨 강풍주의 알림 발송");
}
switch
💡비교 연산자 사용 제한
- switch 문은 주어진 표현식의 결과와 case 레이블의 값을 비교하여 일치하는 경우 해당 블록을 실행합니다. 이때, switch 문은 단순한 값의 일치만을 비교하며, if 문처럼 복잡한 비교 연산자나 조건식을 사용할 수 없습니다. 2
The switch statement evaluates its expression, then executes all statements that follow the matching case label.
💡break 문
- switch 문에서 각 case 블록의 끝에 break 문을 사용하지 않으면, 다음 case 블록으로 실행이 이어지는 "fall-through" 현상이 발생합니다. 이는 의도치 않은 동작을 유발할 수 있으므로, 명시적으로 break 문을 사용하여 각 case 블록의 실행을 종료하는 것이 권장됩니다. 3
Using a break is recommended so that modifying the code is easier and less error prone.
💡Java 14의 새로운 switch 문
- Java 14에서는 switch 문이 표현식으로 확장되어, case L -> 구문을 도입하였습니다. 이 새로운 구문은 break 문 없이도 각 case 블록을 명확하게 구분할 수 있으며, yield 키워드를 사용하여 값을 반환할 수 있습니다. 4
Switch expressions evaluate to a single value and can be used in statements. They may contain 'case L ->' labels that eliminate the need for break statements to prevent fall through.
✅ 예제
int day = 3;
switch (day) {
case 1:
System.out.println("월요일");
break;
case 2:
System.out.println("화요일");
break;
case 3:
System.out.println("수요일");
break;
default:
System.out.println("기타 요일");
}
while
💡do-while
- do-while 문은 루프 본문을 먼저 실행한 후 조건을 평가하므로, 조건이 처음부터 false여도 루프 본문이 최소 한 번은 실행됩니다. 이는 사용자 입력 검증 등 최소 한 번의 실행이 필요한 경우에 유용합니다. 5
The statements within the do block are always executed at least once.
✅ 예제
class DoWhileDemo {
public static void main(String[] args){
int count = 1;
do {
System.out.println("Count is: " + count);
count++;
} while (count < 11);
}
}
break, continue
break와 continue는 루프의 흐름을 제어하는 데 사용됩니다. 6
반복문 (for, while, do-while)에서 사용할 수 있는 키워드입니다.
The continue statement skips the current iteration of a for, while, or do-while loop.
- break : 현재 루프를 즉시 종료하고 루프 다음의 첫 번째 문으로 제어를 이동시킵니다.
✅ 예제
for (int i = 1; i <= 10; i++) {
if (i == 5) {
break; // i가 5일 때 반복 종료
}
System.out.println(i);
}
// 출력: 1 2 3 4
- continue : 현재 반복의 나머지 코드를 건너뛰고 다음 반복을 시작하기 위해 조건식을 평가합니다. 조건식이 참이면 반복문을 실행합니다.
✅ 예제
for (int i = 1; i <= 5; i++) {
if (i == 3) {
continue; // i가 3일 때는 출력 건너뜀
}
System.out.println(i);
}
// 출력: 1 2 4 5
for
💡증감식
- for 문의 세 번째 부분인 증감식은 루프 변수의 값을 변경하는 표현식이라면 어떤 것이든 사용할 수 있습니다. 예를 들어, i++, i--, i += 2, i *= 2 등 다양한 형태가 가능합니다. 7
The increment expression is invoked after each iteration through the loop; it is perfectly acceptable for this expression to increment or decrement a value.
✅ 예제
class ForDemo {
public static void main(String[] args){
for(int i=1; i<11; i++){
System.out.println("Count is: " + i);
}
}
}
💡구성 요소 생략
The three expressions of the for loop are optional; an infinite loop can be created.
✅ 예제
// infinite loop
for ( ; ; ) {
// your code goes here
}
for vs while
💡핵심 차이 : 변수의 생존 범위(Scope)
항목 | for 문 | while 문 |
변수 선언 위치 | 루프 내부(헤더)에서 선언 가능 → 루프 끝나면 사라짐 | 보통 루프 외부에서 선언함 → 루프 이후에도 살아있음 |
스코프 | 루프 블록 안에서만 유효 | 루프 이후에도 변수 접근 가능 |
✅ for 문 예제
for (int i = 0; i < 5; i++) {
System.out.println("i = " + i);
}
// 아래는 컴파일 에러 발생 (i는 for문 안에서만 유효)
// System.out.println(i); // ❌ 오류!
✅ while 문 예제
int i = 0; // 루프 외부에서 선언
while (i < 5) {
System.out.println("i = " + i);
i++;
}
// 정상 출력됨
System.out.println("최종 i = " + i); // ✅ 5
출처
- https://docs.oracle.com/javase/tutorial/java/nutsandbolts/if.html [본문으로]
- https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html [본문으로]
- https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html [본문으로]
- https://docs.oracle.com/en/java/javase/14/language/switch-expressions.html [본문으로]
- https://docs.oracle.com/javase/tutorial/java/nutsandbolts/while.html [본문으로]
- https://docs.oracle.com/javase/tutorial/java/nutsandbolts/while.html [본문으로]
- https://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html [본문으로]
- https://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html [본문으로]
반응형
'Java > Grammar' 카테고리의 다른 글
[Java] 배열 (Arrays) (1) | 2025.04.25 |
---|---|
[Java] 변수의 생존 범위 (Scope) (1) | 2025.04.24 |
[Java] Checked, Unchecked Exception (0) | 2025.03.25 |
[Java 문법] @Builder (0) | 2025.03.19 |
[Java 문법] 불변 객체(Immutable Object)란? ft. 가변 객체 (0) | 2025.03.18 |