Notice
Recent Posts
Recent Comments
Link
bdfgdfg
클래스 초기화 본문
반응형
멤버변수의 초기화 방법
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 블럭 초기화는 모든 생성자가 공통적으로 수행되어야 하는 코드를 집어넣는게 일반적.
초기화 순서 정리.
클래스 초기화 = 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