Java 클래스 변수와 구성원 변수 초기화 과정의 응용 소개
클래스의 초기화: 클래스의 초기화는 일반적으로 한 번만 초기화되고 클래스의 초기화는 주로 정적 구성원 변수를 초기화합니다.
클래스의 컴파일은 클래스의 초기화 과정을 결정한다.
컴파일러가 생성한 class 파일은 주로 원본 파일에 정의된 클래스를 다음과 같이 변경합니다.
1) 정적 구성원 변수의 정의 순서에 따라 클래스 내부에서 구성원 변수를 선언합니다.
2) 원java류에서 구성원 변수의 초기화 순서에 따라 초기화한다.
자바 클래스와 컴파일된 클래스의 변환은 다음과 같습니다.
원본 파일:
public class Person{
public static String name=" ";
public static int age;
static{
age=20;
System.out.println(" age");
}
public static String address;
static{
address=" ";
age=34;
}
public static void main(String[] args) {
System.out.println(name);
System.out.println(age);
System.out.println(address);
}
}
자바 원본 코드가 하나의class 파일로 변환된 후 다음과 같은 코드로 변환된다.
public class Person{
public static String name;
public static int age;
public static String address;
static{
name=" ";
age=20;
System.out.println(" age");
address=" ";
age=34;
}
public static void main(String[] args) {
System.out.println(name);
System.out.println(age);
System.out.println(address);
}
}
초기화 순서는 변환된 후에 대응하는class류 구성원 변수의 초기화 순서에 따라 순차적으로 실행되기 때문에 모든 정적 구성원 변수는 먼저 성명하고 나중에 값을 집행한다. 또한 값을 부여하는 순서도 원본 코드에 따라 정적 구성원 변수를 초기화하는 순서에 따라 진행된다.주의: 구성원 변수를 정의하고 정적 코드 블록에서 초기화하는 것과 직접 초기화하는 것은 등가이며, 모두 원본 코드에서 정의한 순서에 따라 진행된다.2. 대상의 생성
대상의 생성에 대한 초기화 과정은 클래스의 초기화 과정과 유사하지만 구조 함수 단계를 증가시킨다. 원본 코드는 다음과 같다.
public class Person{
{
name=" ";
age=56;
System.out.println(" age");
address=" ";
}
public String name=" ";
public int age=29;
public String address=" ";
public Person(){
name=" ";
age=23;
address=" ";
}
}
컴파일러가class 파일로 변환된 후에 유사한 다음 코드로 변환된다.
public class Person{
public String name;
public int age;
public String address;
public Person(){
name=" ";
age=56;
System.out.println(" age");
address=" ";
name=" ";
age=29;
address=" ";
name=" ";
age=23;
address=" ";
}
}
클래스에서 구성원 변수에 대한 초기화와 코드 블록에 대한 코드는 모두 구조 함수로 옮겨진 것을 볼 수 있다.또한 자바 원본 파일의 초기화 순서에 따라 구성원 변수를 초기화하고 원본 구조 함수의 코드는 구조 함수의 마지막 실행으로 옮겼다.본인은 이전에 유형 초기화 과정에 대해 깊은 이해를 하지 못했습니다. 도대체 어떻게 초기화되었는지 알 수 없어서 책에서 말한 대로 초기화 순서를 기억할 수 밖에 없었습니다. 그러나 시간이 지나면 잊어버렸기 때문에 이번에는 확실하게 했습니다. 아니면 하나의 모델에 따라 초기화 메커니즘을 설명하는 것이 좋습니다. 더 이상 외울 필요가 없습니다. 이해해야만 쉽게 잊지 않을 수 있습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
38. Java의 Leetcode 솔루션텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.