본문 바로가기
언어/java

[java] switch/case 문

by 개발LOG 2025. 5. 2.
반응형

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