로컬 변수이기 때문에. 이것이 할당 된 이유가 없습니다 :
로컬 변수가 약간 씩 다릅니다. 컴파일러는 기본값을 초기화되지 않은 로컬 변수에 할당하지 않습니다. 로컬 변수가 선언 된 곳에서 을 초기화 할 수 없다면 에 값을 할당해야합니다. 초기화되지 않은 로컬 변수 에 액세스하면 컴파일 타임 오류가 발생합니다.
편집 : 왜 Java에서이 컴파일 오류가 발생합니까? 우리가 IdentifierExpression.java
클래스 파일을 보면, 우리는이 블록 찾을 수 있습니다 : 언급 한 바와 같이
...
if (field.isLocal()) {
LocalMember local = (LocalMember)field;
if (local.scopeNumber < ctx.frameNumber && !local.isFinal()) {
env.error(where, "invalid.uplevel", id);
}
if (!vset.testVar(local.number)) {
env.error(where, "var.not.initialized", id);
vset.addVar(local.number);
}
local.readcount++;
}
...
(if (!vset.testVar(local.number)) {
), (testVar
포함) JDK 검사 변수가 할당되어있는 경우 (Vset
's source code 우리가 testVar
코드를 찾을 수 있습니다). 그렇지 않은 경우는 properties file에서 오류 var.not.initialized
을 제기
...
javac.err.var.not.initialized=\
Variable {0} may not have been initialized.
...
Source
편집 : 예, 작동하지만 초기화를 피하기 위해 로컬로 필드를 승격하는 것이 합당한 예가 될 수 없습니다 .-) – fvu
@fvu, 예를 들어, 일부 용도로 사용됩니다. : D – user1329572