반응형
switch/case 구조문:
switch(입력변수) {
case 입력값1: ...
break;
case 입력값2: ...
break;
...
default: ...
break;
}
if-else if-else문을 switch문으로 바꿀 수 있다.
break를 쓰면 해당 case만 실행하고 swich문을 빠져나가고, 만약 break를 쓰지 않는다면 참인 것 아래 case들 다 실행된다.
default문은 생략가능하고 사용할 시 case문을 실행하고 마지막으로 무조건 실행된다.
Java에서 switch 문에서 break 문이 있을 때와 없을 때의 동작 차이
✅ break가 있을 때
int num = 2;
switch (num) {
case 1:
System.out.println("One");
break;
case 2:
System.out.println("Two");
break;
case 3:
System.out.println("Three");
break;
default:
System.out.println("default");
}
출력:
Two
- break는 해당 case 실행 후 switch 문을 빠져나오게 합니다.
- 원하는 case만 실행하고, 나머지는 건너뜀.
⚠️ break가 없을 때
int num = 2;
switch (num) {
case 1:
System.out.println("One");
case 2:
System.out.println("Two");
case 3:
System.out.println("Three");
default:
System.out.println("default");
}
출력:
Two
Three
default
- num이 2인 case부터 시작해 break가 없으므로 아래로 계속 실행됨.
- 이것을 fall-through 현상이라고 부릅니다.
요약
구분 결과
| break 있음 | 해당 case만 실행하고 switch 블록 종료 |
| break 없음 | 해당 case 이후의 모든 case가 순차 실행됨 |
특수한 경우에 intentionally fall-through(의도적으로 break 없이 여러 case를 실행)하는 경우도 있지만, 대부분은 실수로 break를 빼서 버그가 생기는 경우가 많다.
Java12 이후부터는 switch문에서 Expressions(표현식)을 사용할 수 있다. break문을 없애는 대신에 화살표와 중괄호를 사용해 가독성이 좋아졌다.
switch 구조문:
switch(입력변수) {
case 입력값1 -> {}
case 입력값2 -> {}
...
default -> {}
}
예시)
char grade='B';
//Java12버전 이후 람다식으로 추가됨
int score = switch(grage) {
case 'A', 'a' -> 100;
case 'B', 'b' -> { int result =100-20;
yield result; } //Java13버전부터 yield 사용가능(리턴의미)
default -> 60;
};
System.out.println("score : "+score);
반응형
'언어 > java' 카테고리의 다른 글
| [java] Set-HashSet, LinkedHashSet, TreeSet (0) | 2025.05.02 |
|---|---|
| [java] for, for each문 (0) | 2025.05.02 |
| [java] 이클립스 단축키 모음 (0) | 2025.05.02 |
| [java] 삼항연산자 (0) | 2025.04.09 |
| [java] JVM 동작 방식 및 메모리 구조 (0) | 2024.12.23 |