static block
- 클래스가 로딩되고 클래스 변수가 준비된 후 자동으로 실행되는 블록
- 한 클래스 안에 여러개의 static 블록을 넣을 수 있다.
- 용도
- 주로 클래스 변수를 초기화시키는 코드를 둔다.
- 사용법
public class Person{
static String name;
static{
name = "김민혁";
}
}
- 클래스가 로딩된다
- 클래스 변수가 있으면 메모리를 생성한다.
- static 블록이 선언된 순서대로 실행된다.
클래스 로딩 절차
- JRE 라이브러리 폴더에서 클래스를 찾는다.
- 없으면 CLASSPATH 환경 변수에 지정된 폴더에서 클래스를 찾는다.
- 찾았으면 그 클래스 파일이 올바른 바이트코드인지 검증한다.
- 올바른 바이트코드라면 Method Area 영역으로 파일을 로딩한다
- 클래스 블록이 있으면 순서대로 그 블록을 실행한다.
- 클래스 안에 static block들이 있으면 순서대로 그 블록을 실행한다.
instance blcok
- 인스턴스가 생성된 후 자동으로 실행하는 블록
- 한 클래스 안에 여러개의 인스턴스 블록을 넣을 수 있다.
- 용도
- 인스턴스 변수를 초기화시키는 코드를 둔다.
- 어떤 생성자가 호출되든 그 전에 공통으로 초기화시키고 싶은 작업이 있다면 인스턴스 블록에서 처리하면 된다.
- 사용법
public class Person {
static String name;
int age;
{
// 인스턴스 블록
this.age= 30;
}