우수 답변
정적 차단 {}
- 정적 블록은 클래스의 정적 데이터를 초기화하는 데 사용되며 정적 리소스를 생성합니다.
- 정적 블록은 클래스가 메모리에로드되는 즉시 한 번만 실행됩니다.
- li>
- 정적 블록은 JavaClass 로더에 의해 main () 메서드 이전에 실행됩니다.
- 클래스는 여러 정적 블록을 가질 수 있으며, 이는 프로그램에 기록 된 것과 동일한 순서로 실행됩니다. .
- 정적 {}, 클래스가로드 될 때마다 실행됩니다.
- 정적 메서드와 비 정적 메서드 내에 정적 블록을 작성할 수 없습니다 (정적 블록은 별도로 작성됩니다). )
- 정적 블록 내에서는 정적 변수 만 액세스 할 수 있습니다.
- 정적 블록 내에서 정적 메서드를 호출 할 수 있습니다.
- 내부에 어떤 메서드도 만들 수 없습니다. 정적 블록.
- 비 정적 변수 및 비 정적 메서드는 내부에서 액세스 할 수 없습니다. 정적 블록.
- 정적 블록 내부의 비 정적 변수 또는 메서드에 액세스하려고하면 컴파일 시간 오류가 발생합니다.
staticblock 유형에서 비 정적 메서드 wow ()에 대한 정적 참조를 만들 수 없습니다.
아래의 정적 블록 예제를 고려하세요.
- 클래스 내부에는 정적 블록 {}이 하나 있습니다.
- 정적 메서드와 정적 블록에서 액세스되는 두 개의 정적 변수 “ss, j”가 선언되어 있습니다.
- 정적 메서드 disp ()가 작성되고 그 안에 정적 변수가 인쇄됩니다.
- 이 메서드는 정적 블록 내에서 호출됩니다 {}
- 정적 변수 및 정적 메서드는 정적 블록 내에서만 액세스 가능
public class staticblock {
static int ss=23; // initialize the static variable with value;
public static void disp() {
System.out.println("runnin static block before main method");
System.out.println("Value inside static method is "+ss);
}
static int j;
static // static block
{
j=8;
System.out.println("static block is invoked with the value"+j); // access the static variable inside static block
disp(); // calling the static method inside static block
}
public static void main(String[] args) {
}
}
출력 확인
정적 블록이 value8로 호출 됨
기본 메서드 이전에 정적 블록 실행
정적 메서드 내부의 값은 23입니다.
Answer
정적 블록은 정적 초기화 블록 span이라고도합니다. >, 클래스는 임의의 수의 정적 블록을 가질 수 있으며 Java 클래스 내부 어디에나 나타날 수 있습니다.
이 블록은 클래스가 lo 일 때 실행됩니다. 기억에 남습니다. 자바 런타임 시스템은 정적 초기화 블록이 소스 코드에 나타나는 순서대로 호출되도록 보장합니다.
예 :
public class Solution{
static {
System.out.println("Static block - 1");
}
static {
System.out.println("Static block - 2");
}
public static void main(String[] args){
System.out.println("Main Method");
}
static {
System.out.println("Static block - 3");
}
}
출력 :
Static block - 1
Static block - 2
Static block - 3
Main Method