> Java > java지도 시간 > 본문

초기화되지 않은 변수와 멤버가 Java에서 다른 동작을 나타내는 이유는 무엇입니까?

Linda Hamilton
풀어 주다: 2024-10-25 03:06:30
원래의
776명이 탐색했습니다.

Why Do Uninitialized Variables and Members Exhibit Different Behaviors in Java?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!