[JavaSE Column 60] 정적 코드 블록, Java 클래스 로딩 중에 실행되는 코드 조각

저자 홈페이지 : 디자이너 Xiao Zheng
저자 간략한 소개 : JAVA 기술에 중점을 둔 3년의 JAVA 풀스택 개발 경험, 시스템 사용자 지정, 원격 안내, 엔터프라이즈 디지털 변환 전담, CSDN College 및 Blue Bridge Cloud Course의 공인 강사.
주요 방향 : Vue, SpringBoot, WeChat 애플릿

이 기사는 Java의 정적 코드 블록의 개념과 구문을 설명하고 샘플 코드를 제공합니다. 정적 코드 블록은 Java 클래스를 로드하는 동안 실행되는 코드 조각입니다.

여기에 이미지 설명 삽입


1. 정적 코드 블록이란?

정적 코드 블록은 Java 클래스 로드 프로세스 중에 실행되는 코드 조각으로, 클래스를 초기화하는 데 사용됩니다 .

정적 코드 블록은 클래스가 처음 로드될 때 실행되며 한 번만 실행되며 구문 형식은 다음과 같습니다.

static {
    
    
    // 静态代码块的代码逻辑
}

정적 코드 블록의 특징은 다음과 같습니다. 5 55 시에 열심히 공부하세요.

  1. 정적 코드 블록은 클래스 로딩 단계 에서 실행 되며 다른 코드 블록 및 생성자보다 우선합니다.
  2. 정적 코드 블록은 한 번만 실행되며 클래스가 로드될 때 자동으로 실행됩니다.
  3. 정적 코드 블록은 정적 변수를 초기화 하고 일부 정적 리소스를 초기화하는 데 사용할 수 있습니다 .
  4. 정적 코드 블록은 비정적 멤버 (인스턴스 변수, 인스턴스 메서드)에 직접 액세스할 수 없지만 정적 멤버(정적 변수, 정적 메서드)에는 액세스할 수 있습니다.
  5. 정적 코드 블록은 정의된 순서대로 순차적으로 실행됩니다 .

정적 코드 블록은 종종 정적 변수 초기화, 드라이버 로드, 정적 리소스 초기화 및 기타 작업에 사용됩니다. 주요 기능은 클래스 로딩 중에 필요한 몇 가지 준비를 수행하여 클래스의 정적 멤버가 사용 전에 올바르게 초기화되었는지 확인하는 것입니다.

여기에 이미지 설명 삽입


2. 정적 코드 블록을 사용하는 이유

Java에서 정적 코드 블록의 주요 기능은 클래스 로딩 프로세스 중에 일부 특정 초기화 작업을 수행하는 것입니다. 다음은 정적 코드 블록을 사용하는 4 개 중 4개입니다.4 가지 일반적인 시나리오, 주의 깊게 공부하세요.

  1. 정적 변수 초기화 : 정적 블록은 정적 변수를 초기화하는 데 사용할 수 있으므로 사용 전에 적절하게 초기화되도록 합니다. 이는 정적 리소스를 미리 준비해야 하는 일부 경우에 매우 유용합니다.
  2. 드라이버 로드 : Java에서 데이터베이스 드라이버를 로드하려면 일반적으로 정적 코드 블록을 사용해야 합니다. 정적 코드 블록은 클래스 로딩 중에 관련 드라이버 로딩 작업을 수행할 수 있으므로 데이터베이스를 사용하기 전에 드라이버가 올바르게 로드되었는지 확인할 수 있습니다.
  3. 정적 리소스 초기화 : 정적 리소스를 미리 준비해야 하는 경우에 정적 코드 블록을 사용하여 일부 초기화 작업을 수행할 수 있습니다. 예를 들어 웹 서버 프로그램의 경우 정적 코드 블록에서 서버의 구성 정보를 초기화할 수 있습니다.
  4. 일회성 작업 실행 : 정적 코드 블록은 클래스가 로드될 때 한 번만 실행되므로 한 번만 실행하면 되는 일부 작업을 수행하는 데 사용할 수 있습니다. 예를 들어 구성 파일 읽기, 데이터베이스 연결 설정 등입니다.

즉, 정적 코드 블록은 클래스를 로드하는 동안 초기화 작업을 수행하기 위한 메커니즘을 제공하며, 이는 클래스를 사용할 때 관련 리소스 및 변수가 올바르게 초기화되었는지 확인하는 데 사용할 수 있습니다. 일부 특정 시나리오에서 매우 유용하며 코드의 안정성과 유지 관리성을 향상시킬 수 있습니다.

여기에 이미지 설명 삽입


3. 정적 코드 블록 사용 방법

다음은 정적 코드 블록을 사용하는 Java 샘플 코드이므로 로컬 환경에 복사하여 실행해 보십시오.

public class StaticBlockExample {
    
    
    private static int count;
    private static String message;

    // 静态代码块
    static {
    
    
        count = 10;
        message = "Hello, World!";
        System.out.println("静态代码块被执行");
    }

    public static void main(String[] args) {
    
    
        System.out.println("count: " + count);
        System.out.println("message: " + message);
    }
}

위의 코드에서 StaticBlockExample정적 코드 블록과 main메서드를 포함하는 라는 클래스를 정의했습니다. 정적 코드 블록은 클래스가 로드될 때 실행되며 정적 변수를 초기화하는 데 사용됩니다.

정적 코드 블록에서 10 10count 으로 초기화합니다.10 으로message초기화됩니다Hello, World!.

main메서드 에서 이 두 정적 변수의 값을 출력합니다.

이 코드를 실행하면 다음 결과가 출력됩니다.

静态代码块被执行
count: 10
message: Hello, World!

클래스가 로드되면 정적 코드 블록이 실행되고 정적 변수가 올바르게 초기화되어 이러한 초기화된 정적 변수를 다른 메서드에서 사용할 수 있음을 알 수 있습니다.

여기에 이미지 설명 삽입


4. 정적 코드 블록 인터뷰 질문

1. 정적 코드 블록과 일반 코드 블록의 차이점은 무엇입니까?

대답: 정적 코드 블록은 클래스가 로드될 때 실행되는 반면 일반 코드 블록은 개체가 인스턴스화될 때 실행됩니다. 정적 코드 블록은 한 번만 실행되는 반면 일반 코드 블록은 객체가 인스턴스화될 때마다 실행됩니다.

2. 정적 코드 블록과 생성자의 차이점은 무엇입니까?

답변: 정적 코드 블록은 클래스가 로드될 때 실행되며 정적 멤버 변수를 초기화하는 데 사용됩니다. 구성 메서드는 개체가 인스턴스화될 때 실행되며 인스턴스 멤버 변수를 초기화하는 데 사용됩니다.

3. 정적 코드 블록의 기능은 무엇입니까?

답변: 정적 코드 블록은 주로 정적 변수 초기화, 드라이버 로드 등과 같이 클래스 로딩 중에 필요한 몇 가지 준비를 수행하는 데 사용됩니다. 클래스의 정적 멤버가 사용 전에 적절하게 초기화되었는지 확인합니다.

4. 정적 코드 블록이 비정적 멤버에 액세스할 수 있습니까?

답변: 정적 코드 블록은 클래스가 로드될 때 실행되고 비정적 멤버가 개체 인스턴스에 속하기 때문에 비정적 멤버(인스턴스 변수, 인스턴스 메서드)에 직접 액세스할 수 없습니다. 그러나 정적 코드 블록은 개체 인스턴스를 생성하여 비정적 멤버에 간접적으로 액세스할 수 있습니다.

5. 정적 코드 블록의 실행 순서는 무엇입니까?

답변: 클래스가 로드되면 정적 코드 블록이 정의된 순서대로 순차적으로 실행됩니다. 여러 정적 코드 블록이 있는 경우 실행 순서는 정의된 순서와 일치합니다.


V. 요약

이 기사에서는 Java의 정적 코드 블록의 개념과 구문을 설명하고 샘플 코드를 제공하며 다음 블로그에서는 Java 객체 지향 캡슐화의 지식 포인트를 설명합니다.

여기에 이미지 설명 삽입

추천

출처blog.csdn.net/qq_41464123/article/details/132003302