Java에서는 코드 블록을 코드 블록이라고하며 코드 블록은 다음 4 가지 유형으로 나눌 수 있습니다.
1. 소개
1. 일반 코드 블록 :
수업의 방법 본문
2. 코드 블록 구성 :
생성자는 객체가 생성 될 때 호출되며, 클래스 생성자의 실행보다 우선 순위를 차지하고 생성 될 때마다 호출됩니다.
3. 정적 코드 블록 :
static {}로 랩핑 된 코드 스 니펫은 한 번만 실행됩니다. 정적 코드 블록은 시공 블록 실행보다 우선합니다.
4. 코드 블록 동기화 :
다중 스레드 환경에서 랩핑 된 Synchronized () {} 코드 블록을 사용하여 공유 데이터에 대한 작업을 읽고 쓰는 것은 상호 배타적이어야합니다. 그렇지 않으면 데이터 불일치로 이어질 것입니다. 동기 코드 블록은이 메소드에 작성해야합니다.
2. 정적 코드 블록과 구성된 코드 블록의 유사성과 차이점
유사성 : 모든 JVM은 클래스를로드하고 생성자가 실행되기 전에 실행됩니다. 클래스에서 다중 정의가 정의 될 수 있습니다. 일반적으로 일부 정적 변수는 코드 블록에 할당됩니다.
차이 : 정적 코드 블록 전에 정적 코드 블록이 실행됩니다. 정적 코드 블록은 첫 번째 신규에서 한 번만 실행되며 나중에 실행되지 않습니다. 대신, 비 정적 코드 블록은 새로운 새로운 코드 블록이 한 번씩 실행됩니다.
삼. 예
일반 코드 블록 : {} 메소드 또는 문에 나타나는 것을 일반 코드 블록이라고합니다. 일반 코드 블록의 실행 순서 및 일반 문장은 코드에 나타나는 순서에 따라 결정됩니다.
공개 클래스 테스트 {public static void main (String [] args) {{int x = 3; System.out.println ( "variable x =" + x); } int x = 1; System.out.println ( "variable x =" + x); {int y = 7; System.out.println ( "variable y =" + y); }}} / * * 일반 코드 블록에서 실행 결과 변수 x = 3 주 메소드의 변수 x = 1 일반 코드 블록 * /의 변수 y = 7구성 코드 블록 : 클래스에서 직접 정의되고 정적 키워드가없는 코드 블록을 {} 구조 코드 블록이라고합니다. 생성자 코드 블록은 객체를 만들 때 호출되며 개체가 생성 될 때마다 호출되고 생성자 코드 블록의 실행 순서가 클래스 생성자보다 우선합니다. 구성된 코드 블록이 여러 개있는 경우 실행 순서는 코드에 나타나는 순서에 따라 결정됩니다. 먼저 첫 번째 실행이 나타납니다.
public class test1 {{system.out.println ( "첫 번째 빌딩 블록");} public test1 (int i) {system.out.println ( "th" + i + "sub-" + "constructor");} {system.out.println ( "두 번째 빌딩 블록");} public static void (문자열 []); test1 (2);}}/** 실행 결과 첫 번째 빌딩 블록* 두 번째 빌딩 블록* 0 번째 콜 생성자* 첫 번째 빌딩 블록* 두 번째 빌딩 블록* 첫 번째 빌딩 블록* 첫 번째 빌딩 블록* 첫 번째 빌딩 블록* 두 번째 빌딩 블록* 구성 방법을위한 두 번째 호출*/정적 코드 블록 : Java의 정적 키워드를 사용하여 선언 된 코드 블록. 정적 블록은 클래스를 초기화하고 클래스의 속성을 초기화하는 데 사용됩니다. 각 정적 코드 블록은 한 번만 실행됩니다. 클래스를로드 할 때 JVM이 정적 코드 블록을 실행하므로 정적 코드 블록은 기본 메소드 전에 실행됩니다.
클래스에 여러 정적 코드 블록이 포함되어 있으면 먼저 실행되면 정의 된 코드가 나중에 실행됩니다.
알아채다:
1. 정적 코드 블록은 모든 방법에 존재할 수 없습니다.
2. 정적 코드 블록은 인스턴스 변수 및 인스턴스 메소드에 직접 액세스 할 수 없으며 클래스의 인스턴스 객체를 통해 액세스해야합니다.
public class test3 {public static string static_field = "정적 속성"; // static block static {Systation.out.println (static_field); System.out.println ( "static code block 1");} public string field = "비 정적 속성"; // 비 정적 블록 {system.out.println (field.out.out.out.out.out.out.out. 2 ");} public initodertest () {system.out.println ("매개 변수 생성기 ");} public static void main (string [] args) {initodertest = new initodertest ();} // 비 정적 블록 {system.out.println (field); System.out.println ("non nonectatic code 1 "; {System.out.println (static_field); System.out.println ( "STATIC CODE BLOCK 2");}}/** 결과 정적 속성 실행 정적 코드 블록* 정적 속성* 정적 코드 블록 2* 비 정적 코드 2* 비 정적 속성* 비 정적 코드 블록 1* 비 어종 구성 구성*/다음 코드는 객체 생성과 메소드를 호출하는 개별 코드 블록 간의 우선 순위 관계를 보여줍니다.
공개 클래스 사람 {static {system.out.println ( "1. 나는 구성 블록 실행보다 우선하는 정적 블록입니다! 그리고 첫 번째 객체가 생성 될 때 한 번만 실행됩니다!")} {System.out.println ( "2. Execute를보다 우선 순위로 삼고 있습니다!") function1 () {system.out.println ( "나는 메소드가 호출 될 때 우선 순위가없는 비 정적 메소드의 일반 코드 블록입니다!";테스트 클래스 :
공개 클래스 HellowRold {public static void main (String [] args) {new person (). function1 (); New Person (). function1 (); System.out.println ( "==================================================================================== ====================================================================== ====================================================================== =================================================================== ====================================================================== ====================================================================== ======================================================================실행 결과 :
우리는 정적 블록이 항상 먼저 실행된다는 것을 알 수 있으며, 클래스의 첫 인스턴스가 생성 될 때만 한 번만 실행됩니다. 두 번째는 생성자 블록입니다. 세 번째는 생성자 방법입니다.
요약
위의 것은 Java의 4 개의 코드 블록에 대한 자세한 설명에 관한 것이며, 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구는이 사이트의 다른 관련 주제를 계속 참조 할 수 있습니다. 단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!