Java의 초기화되지 않은 변수 및 멤버
다음 코드 조각을 고려하세요.
public class TestClass { private String a; private String b; public TestClass() { a = "initialized"; } public void doSomething() { String c; a.notify(); // This is fine b.notify(); // This is fine - but will end in an exception c.notify(); // "Local variable c may not have been initialized" } }
"b"와 "c"가 모두 초기화되지 않았음에도 불구하고 컴파일러는 "c"에 대해서는 컴파일 타임 오류를 발생시키지만 "b"에 대해서는 발생시키지 않습니다. 이 차이점은 인스턴스 변수와 지역 변수를 초기화하는 언어의 규칙에서 비롯됩니다.
객체 유형의 인스턴스 변수(예: "a" 및 "b")는 명시적으로 초기화되지 않으면 기본적으로 null로 초기화됩니다. 이것이 "b.notify()"에 액세스해도 "null.notify()"와 실질적으로 동일하므로 즉각적인 오류가 발생하지 않는 이유입니다. 그러나 이 액세스는 코드가 실행될 때 궁극적으로 NullPointerException을 트리거합니다.
반대로 객체 유형의 지역 변수는 기본적으로 초기화되지 않습니다. "c"와 같이 초기화되지 않은 지역 변수에 액세스하려고 하면 컴파일 시간 오류가 직접 발생합니다. 이 엄격한 요구 사항은 지역 변수가 사용되기 전에 항상 적절하게 초기화되도록 보장합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3