머리말
오늘, Android Contentprovider 구현을 볼 때, 나는 Java 클래스의 새로운 프로세스 동안 정적 도메인, 정적 블록, 비 종종 블록, 비 종종 블록 및 건설적 기능의 실행 순서를 갑자기 생각했습니다. 사실, 이것은 매우 고전적인 문제로, Java의 기본 지식을 파악하기 위해 매우 검토되었습니다. 인터뷰 과정에서 그러한 문제가 있다고 생각하며 주말에 검토 할 시간을 활용합니다.
결론적으로
다음은 모든 사람에게 분류 된 결론입니다. 그런 다음 결론을 확인하는 프로그램을 작성합니다. Java 클래스가 새롭고있는 동안 실행 순서는 다음과 같습니다.
상속 클래스를 구현하는 과정에서 초기화 실행 순서는 다음과 같습니다.
여기에는 정적 코드 블록과 비 종합 코드 블록을 소개해야합니다.
1. 정적 코드 블록 :
정적 {
}
2. 비 스틱 코드 블록
{{
}
정적 코드 블록과 비 스틱 코드 블록의 유사점과 차이점은 다음과 같습니다.
결론의 확인에 대한 최상의 검증은 결과를 증명하기 위해 코드를 작성하는 것입니다. 먼저 상속 클래스가 초기화 될 때 실행 순서를 살펴 보겠습니다.
public class initodertest {public static static_field = "static properties"; -Static Properties "; // non -static blocks {system.out.println (field); system.out.println ("비 -스틱 코드 블록 ");} public initodertest () {system.out.println);} public static void main (string [] args) {initodrtest test = new initodertest ();}} 실행 결과 :
다음으로 Java 클래스가 상속되면 실행 순서가 우리의 결론과 일치하는지 확인해 보겠습니다. 테스트 코드는 다음과 같습니다.
class indress {public static parent_static_field = parent-static block {system.out.println String Parentfield = "Family-Non-static 속성"; pareatttest () {system.out.println ( "family -public class initodertest 확장 pareatttest {public stration static_field ="static attribute "; // static block static {systation.println (static_field); system.out.println (") 정적 코드 블록 ");} public String field ="non -static properties "; // non -static block {system.out.println (field); system.out.pr. intln ("비 -스틱 코드 블록 ") ;} public initodertest () {System.out.println ( "portomless 생성자");실행 결과는 다음과 같습니다.