9.27 10-3 static 블락
[static 블락]
-동일 클래스 안의 main보다 먼저 실행됨 즉 main에 실행코드가 없어도 static블락안에 있는 내용이 실행됨
단, 다른 클래스에 main이 있는 경우는
다른 클래스의 main이 순차적으로 실행되다 ***static블락이 있는 클래스를 인스턴스화 할때***
그때 ****생성자보다 먼저 static블락이 실행된다.*******
Static 블락안에서는 정적 멤버만 사용가능
모든객체가 공유한다.
* static형식 :
static{
이 안엔 정적멤버만 사용 가능
}
public class StaticBlock {
public StaticBlock() {
System.out.println("staticBlock의 생성자");
}
//인스턴스형 멤버
int instanceVar;
void instanceMethod() {}
//정적멤버
static int staticVar;
static void staticMethod() {
int localVar = 10; //지역변수
System.out.println("정적 메소드:"+localVar);
}
////////static 블락//////////////////////////
static {
System.out.println("[static블락 시작]");
System.out.println(instanceVar); 인스턴스형 멤버는 못옴
System.out.println(staticVar);
staticMethod(); 정적멤버 가능
int localvar = 10;
System.out.println("static블락에서 선언한 지역변수:" +localvar );
System.out.println("[static블락 끝]");
} //////////////////////////////////////////
main
System.out.println("[StaticBlockApp의 메인 메소드]"); <--- 컴퓨터는 메인 위에서부터 차례로 실행하는데
StaticBlock sb=new StaticBlock(); <-- 요 생성자 보다 static블락이 먼저 실행됨