본문 바로가기

개발/Java

[Java] Switch문에서 케이스 지역변수 선언

Switch문은 보통 아래처럼 케이스에는 중괄호를 딱히 해주지 않아도 된다.

switch("변수") {
	case "조건" :
		break;
	case "조건" :
		break;
	default :
}

 

그러나 Switch문에서 해당 케이스에만 사용할 지역 변수를 선언할 때는 꼭 중괄호 {}를 해주어야 오류가 나지 않는다!

switch(name){
    case "ggumi" : {
    	int ggumiAge; //이 케이스 안에서만 사용할 지역변수 (중괄호 없이 사용하면 에러)
    }
    case "mochi" : {
    
    }
	default :
}

 

 

 

 

참고로 Switch문의 모든 케이스에서 사용하는 변수는 아래 코드와 같이 switch문 안에 선언하고 사용하려고 했는데, 마지막 케이스에서만 인식이 안 되는 오류가 발생했다. (뭐지 ?)

 

컴파일러가 범위를 명확하게 인식하지 못 하는 듯하다.

switch(name){
	int age; //switch문의 모든 케이스에서 사용할 지역변수
    case "ggumi" : {
    	age =20;
    }
    case "mochi" : {
    	age = 22;
    }
    case "dangi" : {
    	age = 5; //여기서만 age변수가 인식이 안 되는 에러가 남.
    }
	default :
}

 

 

 

결론 
  1. Switch문의 모든 케이스에서 사용할 변수는 그냥 Switch문 밖에서 전역변수로 선언해주자.
  2. Switch문의 한 케이스에서만 사용할 지역변수를 선언할 땐 중괄호를 꼭 해주자.