Java

[Java]Static block

MoZZANG 2022. 3. 7. 21:19

동일 클래스 안의 main보다 먼저 실행됨 즉 main에 실행코드가 없어도 static블락안에 있는 내용이 실행된다.

 

단, 다른 클래스에 main이 있는 경우는 main이 순차적으로 실행되다 static블락이 있는 클래스를 인스턴스화 할때
그때 생성자보다 먼저 static블락이 실행된다.
 

static 블락안에서는 정적 멤버만 사용가능

구조는 아래와 같다.

 

 

 

▲ 클래스안에 메소드와 맴버들을 만들어보자.

 

 

▲ 그리고 그 아래에 이어서 static block을 만들어보자. statc block안에는 당연히 인스턴스형 맴버는 올 수 없다는 것을 이제는 알 것이다. 

 

 

이렇게 StaticBlock이라는 자바파일에서 클래스를 만들고 같은 패키지의 다른 파일에서 호출해보자.

 

 

 

▲ StaticBlockApp이라는 자바파일안에서 StaticBlock을 sb라는 이름으로 선언 및 객체화(인스턴스화)하면 결과는 아래와 같다.

 

 

 

▲ StaticBlock형의 메모리를 호출하면 분명 코드 순서상으로는  'Staticblock의 생성자'가 먼저 출력되어야 하는데 제일 마지막에 출력된 것을 볼 수 있다. static 블락이 먼저 실행된 것이다. 이처럼 다른 클래스의 main 에서 실행되는 경우는 main이 순차적으로 실행되다 static블락이 있는 클래스를 인스턴스화 할 때 그때 생성자보다 먼저 static블락이 실행된다.

'Java' 카테고리의 다른 글

[Java]Wrapper class - part.2(Integer)  (0) 2022.03.08
[Java]Wrapper class - part.1  (0) 2022.03.08
[Java]modifier part.2  (0) 2022.03.07
[Java]전역변수와 지역변수 & modifier  (0) 2022.03.07
[Java]접근지정자(Access Modifier)  (0) 2022.03.07