Java의 초기화되지 않은 변수 및 멤버
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 initialised" } }
이 시나리오에서 클래스는 doSomething 메소드 내에 두 개의 인스턴스 변수(a 및 b)와 로컬 변수(c)를 포함합니다. 초기화된 인스턴스 변수 a에 액세스하는 동안 예상대로 작동하지만 초기화되지 않은 인스턴스 변수 b 또는 로컬 변수 c를 사용하면 b에 대해 런타임 예외가 발생하고 c에 대해 컴파일 타임 오류가 발생합니다.
차이가 있는 이유 ?
Java 언어 사양에 따르면 객체 유형의 인스턴스 변수는 초기화되지 않은 상태로 두면 기본적으로 null이 되고, 객체 유형의 로컬 변수는 기본적으로 초기화되지 않습니다. 즉, null 객체 참조(b의 경우처럼)에 액세스하면 NullPointerException이 발생합니다.
로컬 변수의 경우 컴파일러에서는 잠재적인 정의되지 않은 동작을 방지하기 위해 사용하기 전에 해당 변수를 명시적으로 초기화해야 합니다. 이 확인은 컴파일 중에 수행되므로 초기화되지 않은 지역 변수에 액세스하면 컴파일 시간 오류가 발생합니다.
위 내용은 초기화되지 않은 변수와 멤버가 Java에서 다른 동작을 나타내는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!