bdfgdfg

클래스 초기화 본문

웹프로그래밍/Java

클래스 초기화

marmelo12 2023. 7. 25. 14:46
반응형

멤버변수의 초기화 방법

1. 명시적 초기화

2. 생성자

3. 초기화 블럭

 - 인스턴스 초기화 블럭 : Non-Static 멤버 변수를 초기화 하는데 사용.

 - 클래스(Static) 초기화 블럭 : Static 멤버 변수를 초기화 하는데 사용.

 

우선 명시적 초기화.

public class TestClass 
{
	private int TestVar = 1;
	private String Teststr = new String("String"); 
}

위와 같이 클래스 변수내에서 선언과 동시에 초기화 값을 넣어준 경우를 명시적 초기화라고 한다.

 

다만 초기화 과정에서 좀 더 복잡하게 초기화를 해주어야할 경우 위와 같은 방식은 어렵다.

 

초기화 블럭

초기화 블럭에는 Non-static 멤버변수의 초기화를 하는 블럭과, Static 멤버변수의 초기화를 하는 블럭 2가지가 존재한다.

public class TestClass 
{
	private int TestVar = 1;
	private String Teststr = new String("String");
	
	public static int iAttack;
	
	// static 초기화
	static 
	{
		// 아무튼 복잡함.
		iAttack = 10;
		iAttack = 30;
		System.out.println("static Block Init");
	}
	
	// Non-static 초기화
	{ 
		TestVar = 50;
		System.out.println("Non- static Block Init");
	}
	
	public TestClass()
	{
		System.out.println("constructor");
	}
}

static Block Init

Non- static Block Init

constructor

실행 시 위와 같은 순서로 초기화가 된다.

Static 블럭 초기화는 클래스가 메모리에 처음 적재될 때 딱 한번만 수행.

 -> JVM마다 조금씩 다른데 클래스가 필요할 때 메모리에 로딩하는 경우와, 프로그램 시작 시 미리 로딩하는 방법 2개가 존재.

Non-Static 블럭 초기화는 인스턴스 생성마다 수행된다.

 -> 그리고 생성자보다 Non-Static 초기화 블럭이 먼저 수행됨.

 

주로 변수의 초기화는 생성자안에다가. Non-Static 블럭 초기화는 모든 생성자가 공통적으로 수행되어야 하는 코드를 집어넣는게 일반적.

 

초기화 순서 정리.

https://dev-cini.tistory.com/58

클래스 초기화 = static

인스턴스 초기화 = non-static

 

 

반응형

'웹프로그래밍 > Java' 카테고리의 다른 글

제어자, 캡슐화/은닉성  (0) 2023.07.26
package와 import  (0) 2023.07.26
자바의 상속,다형성,인터페이스  (0) 2023.07.26
비동기&동기 / 블로킹&논블로킹 IO  (0) 2023.07.26
자바 & JVM  (0) 2023.07.25
Comments