>  기사  >  Java  >  Java 클래스 초기화는 언제 수행됩니까? (코드 포함)

Java 클래스 초기화는 언제 수행됩니까? (코드 포함)

php是最好的语言
php是最好的语言원래의
2018-08-08 10:41:491395검색

Java 프로그램에서 다음 6가지 메소드를 통해 처음으로 클래스나 인터페이스를 사용할 때 시스템은 클래스나 인터페이스를 초기화합니다.

(1) 클래스의 인스턴스를 만듭니다. 클래스의 인스턴스를 생성하는 방법에는 new 연산자를 사용하여 인스턴스를 생성하는 방법, 리플렉션을 통해 인스턴스를 생성하는 방법, 역직렬화를 통해 인스턴스를 생성하는 방법이 있습니다.

(2) 특정 클래스의 클래스 메소드(정적 메소드)를 호출합니다.

(3) 특정 클래스 변수 또는 특정 클래스 변수에 접근합니다. 또는 변수에 값을 할당합니다.

(4) 리플렉션을 사용하여 특정 클래스나 인터페이스에 해당하는 java.lang.Class 객체를 강제로 생성합니다. 예: Class,forName("Person"), 시스템이 Person 클래스를 초기화하지 않은 경우 먼저 Person 클래스를 초기화한 다음 Person 클래스에 해당하는 java.lang.Class 객체를 반환합니다.

(5) 특정 클래스의 하위 클래스를 초기화합니다. 하위 클래스의 모든 상위 클래스가 초기화됩니다.

(6) java.exe 명령을 직접 사용하여 메인 클래스를 실행하면 메인 클래스가 먼저 초기화됩니다.

참고:

최종 클래스 변수의 경우 컴파일 중에 변수 값을 결정할 수 있으면 이 클래스 변수는 "매크로 변수"와 동일하며 Java 컴파일러는 이 클래스 변수를 모두 바꾸기로 직접 변환합니다. 그 값으로 발생합니다. 따라서 프로그램이 정적 변수를 사용하더라도 클래스가 초기화되지는 않습니다. 다음 코드는 정적 초기화 블록

  1. public class Test12 {
    static final String STRING="宏变量";
    static{
    System.out.println("静态初始化块");
    }
    }
    class Test13{
    public static void main(String[] args) {
    System.out.println(Test12.STRING);
    }
    }

    을 인쇄하지 않습니다.

    반대로 최종 수정된 클래스 변수를 컴파일 타임에 확인할 수 없는 경우 클래스 변수의 값은 런타임까지 기다려야 해당 클래스 변수에 클래스를 통해 액세스할 수 있으므로 클래스가 초기화됩니다. . (다음 코드는 정적 초기화 블록을 인쇄합니다.)

public class Test12 {
static final String STRING=""+System.currentTimeMillis();
static{
System.out.println("静态初始化块");
}
}
class Test13{
public static void main(String[] args) {
System.out.println(Test12.STRING);
}

관련 권장 사항:

Java 초기화 메서드 클래스 및 컨테이너에 대한 자세한 설명

배열을 초기화할 때 할당이 상수가 될 수 없는 이유는 무엇입니까?

위 내용은 Java 클래스 초기화는 언제 수행됩니까? (코드 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.