[Java] 자바 스태틱 블록 (static block), 인스턴스 블록 (instance block), 생성자
1. static block (스태틱 블록)
-클래스가 로딩되고 클래스 변수가 준비된 후 자동으로 실행되는 블록
- 한 클래스 안에 여러 개의 static 블록을 넣을 수 있다.
- 용도 :
주로 클래스 변수를 초기화시키는 코드를 둔다.
static block 예제
static class Student {
- 실행 순서 :
1) 클래스가 로딩된다.
2) 클래스 변수가 있으면 메모리를 생성한다..
3) static 블록이 선언된 순서대로 실행된다.
* 참고 : 클래스 로딩 절차
1) JRE 라이브러리 폴더에서 클래스를 찾는다.
2) 없으면, CLASSPATH 환경 변수에 지정된 폴더에서 클래스를 찾는다.
3) 찾았으면, 그 클래스 파일이 올바른 바이트코드인지 검증한다.
4) 올바른 바이트코드라면, Method Area 영역으로 파일을 로딩한다.
5) 클래스 블록이 있으면 순서대로 그 블록을 실행한다.
6) 클래스 안에 static block (스태틱 블록)들이 있으면 순서대로 그 블록을 실행한다.
static block (스태틱 블록)과 변수의 호출 코드
public static void main(String[] args) {
- 실행 결과
static...1
static...2
하하하
2. instance block (인스턴스 블록)
- 인스턴스가 생성된 후 자동으로 실행하는 블록
- 한 클래스 안에 여러 개의 인스턴스 블록을 넣을 수 있다.
- 용도 :
인스턴스 변수를 초기화시키는 코드를 둔다.
어떤 생성자가 호출되든 그 전에 공통으로 초기화시키고 싶은 작업이 있다면
인스턴스 블록에서 처리하면 된다.
instance block 예제
static class Student {
- 실행 순서 :
1) 인스턴스를 생성한다.
2) 생성자가 호출되기 전에 인스턴스 블록이 선언된 순서대로 실행된다.
public static void main(String[] args) {
-실행 결과 :
static {...}
20
{인스턴스 블록 실행...1}
{인스턴스 블록 실행...2}
-------------------------
20
{인스턴스 블록 실행...1}
{인스턴스 블록 실행...2}
3. 생성자 (constructor)
- 인스턴스를 생성한 후 자동으로 호출되는 특별한 메서드
- 인스턴스 변수와의 차이점 :
파라미터를 받아서 인스턴스 변수를 특정 값으로 초기화 시킬 수 있다.
- 여러 개의 생성자를 가질 수 있다. 다만, 그 중에서 한 개만 호출된다.
호출되는 생성자를
- (1) 문법 :
클래스명(파라미터선언) {...}
=> 리턴타입 x
(2) 문법
new 클래스명(아규먼트, ...)
* 주의!
클래스를 작성할 때 생성자를 만들지 않으면,
컴파일러가 자동으로 기본 생성자를 만든다.
=> 이 말인 즉슨, 모든 클래스는 생성자를 한 개 이상 갖게 된다는 의미이다.
new 명령으로 인스턴스를 생성할 때 반드시 어떤 생성자를 호출할 것인지 지정해
야 한다.
constructor 생성자 예제 1
static class Student {
- 실행 순서 :
인스턴스 생성 --> 인스턴스 블록 싱행 --> 생성자 호출
생성자 호출 코드
public static void main(String[] args) {
'Programming > java' 카테고리의 다른 글
[Java] 인스턴스 메서드 (instance method) (0) | 2017.05.11 |
---|---|
[Java] 생성자 (constructor)와 오버로딩 (overloading) (0) | 2017.05.11 |
[Java] 클래스 변수의 개념과 예제 (0) | 2017.05.10 |
[Java] 인스턴스 변수의 개념과 예제 (0) | 2017.05.10 |
[Java] 클래스 로딩과 메모리 영역 (stack, heap, method area) (0) | 2017.05.10 |