이 코드는 잘 작동 : 문자열 참조가switch 문에서 참조가 선언되는 시점은 언제입니까? 놀랍게도
int i = 2;
switch(i) {
case 1:
String myString = "foo";
break;
case 2:
myString = "poo";
System.out.println(myString);
}
그러나 선언해서는 안됩니다? 무엇이든지 상관없이 항상 모든 변수가 선언되었거나 어떻게 해결 될 수 있습니까?
모든 선언이 포함 된 {...} 블록의 시작 부분에서 완료되지 않았습니까? –
쥘이 옳다고 생각합니다. Java는 정적 범위를 가지므로 제어 흐름은 변수의 초기화 (초기화와 반대)에 영향을 미치지 않습니다. 스위치 블록을 입력하면 스택의 위치가 할당됩니다. 그러나 여전히 골동품입니다. GCC는 (나는 생각한다) 자바가'if (someBool) String s = "foo";를 컴파일하는 것을 거부하는 것과 같은 이유로 C 코드를 컴파일하는 것을 거부한다; – musiKk