Java

Java static block 과 instance block

승모근뭉치 2023. 2. 17. 19:31

프로젝트 내 src 내 javabasic 패키지 내 BlockTest.java

package javabasic;

public class BlockTest {// 요 클래스가 로딩이 되는 시간 즉, .class파일이 만들어질
	// 때가 되겠죠 클래스 파일이 생성이 되면 이때 생성이 되고 그 클래스파일을 이용해서 인스턴스를 생성하는
	// 부분이 메인에 두번 있다.
	static { // static은 클래스가 메모리에 로딩이 될때 요 초기화 블럭이 가장 먼저 수행됨
		// static 부는 처음 메모리에 로딩이 될때 (클래스가) 딱 한번만 수행이 된다.
		System.out.println("초기화 블럭 실행");
	} // 클래스 초기화 블럭(main 보다 더 빨리 실행된다) 요 static이라는 블럭안에서
		// driver를 모두 생성한다라는 것

	{
		System.out.println("인스턴스 블럭 실행");
	}

//	생성자, 요 인스턴스 생성자보다 인스턴스 블럭(바로위)이 더 먼저 실행된다.(순서가)
	// 생성자보다 더 먼저 인스턴스블럭이 생성이 된다는거
	public BlockTest() {
		System.out.println("BlockTest 생성");
	}

	public static void main(String[] args) {// 메인메소드는 클래스가 다
		// 로딩이 되고 나서 수행이 된다
		// TODO Auto-generated method stub
		System.out.println("BlockTest bloc = new BlockTest();");
		BlockTest bloc = new BlockTest();// 인스턴스가 생성될때 인스턴스 블럭이 실행되는데

		System.out.println("BlockTest bloc2 = new BlockTest();");
		BlockTest bloc2 = new BlockTest();
	}

}

실행 결과

초기화 블럭 실행
BlockTest bloc = new BlockTest();
인스턴스 블럭 실행
BlockTest 생성
BlockTest bloc2 = new BlockTest();
인스턴스 블럭 실행
BlockTest 생성