자바 정적 코드 블록, 구조 코드 블록, 구조 방법의 실행 순서
3904 단어 Java
정적 코드 는 비 정적 코드 보다 우선 합 니 다. static 에 의 해 수 정 된 구성원 은 모두 클래스 구성원 이기 때문에 JVM 이 클래스 를 불 러 올 때 불 러 올 때 실 행 됩 니 다. static 에 의 해 수 정 된 구성원 도 인 스 턴 스 구성원 이 라 고 불 리 며 대상 을 만들어 야 메모리 에 불 러 옵 니 다.그래서 정적 은 정적 이 아 닌 것 을 우선 합 니 다.구조 기 (구조 방법) 를 실행 할 때 방법 체 를 집행 하기 전에 암시 적 3 단계 가 존재 한다. 1. 슈퍼 문 구 는 다음 과 같은 세 가지 상황 이 발생 할 수 있다. 1) 구조 방법 체 의 첫 줄 은 this 문 구 였 고 암시 적 3 단계, 2) 구조 방법 체 의 첫 줄 은 슈퍼 문 구 였 으 며 해당 하 는 부류 의 구조 방법 을 호출 했다.3) 구조 방법 체 의 첫 번 째 줄 은 this 구문 도 슈퍼 구문 도 아니 고 암시 적 으로 슈퍼 (), 즉 부모 류 의 기본 구조 방법 을 호출 하 는 것 도 하나의 부모 류 가 기본 구조 방법 을 제공 하 는 이유 이다.2. 비정 상 변 수 를 초기 화 합 니 다.3. 구조 코드 블록.이 를 통 해 알 수 있 듯 이 구조 코드 블록 은 구조 방법의 방법론 보다 우선 하지만 this 키워드 와 슈퍼 키 워드 는 동시에 나타 나 지 못 하고 코드 의 첫 줄 에 만 나타 날 수 있다.this 키워드 가 나 오 면 암시 적 세 단 계 는 실행 되 지 않 습 니 다.예 를 들 어 아래 코드 와 실행 결 과 를 분석 하고 실행 절차 인 Step 1 – Step 7 을 주석 으로 표시 했다.즉, 여러 구조 방법 을 재 귀적 으로 호출 할 때 구조 코드 블록 은 마지막 (즉, 방법 체 첫 줄 은 this 문장의 것 이 아니 라) 그 구조 방법 이 실행 되 기 전에 만 실 행 됩 니 다!
public class Test {
public static int a = 0;
static {// Step 1
a = 10;
System.out.println(" a=" + a);
}
{// Step 4
a = 8;
System.out.println(" ( ) a=" + a);
}
public Test() {
this(" 1,a=" + a); // Step 2
System.out.println(" a=" + a);// Step 7
}
public Test(String n) {
this(n, " 2,a=" + a); // Step 3
System.out.println(" 1 a=" + a); // Step 6
}
public Test(String s1, String s2) {
System.out.println(s1 + ";" + s2);// Step 5
}
public static void main(String[] args) {
Test t = null;// JVM Test ,
System.out.println(" new Test :");
t = new Test();
}
}
실행 결과:
a=10
new Test :
( ) a=8
1,a=10; 2,a=10
1 a=8
a=8
http://bbs.csdn.net/topics/391001417
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.