IT 개발노트

변수의 초기화 본문

기초튼튼/JAVA

변수의 초기화

limsungju 2019. 6. 6. 17:33

1. 변수의 초기화
1.1 변수의 초기화
- 변수를 선언하고 처음으로 값을 저장하는 것
- 멤버변수(인스턴스변수, 클래스변수)와 배열은 각 타입의 기본값으로 자동초기화되므로 초기화를 생략할 수 있다.
- 지역변수는 사용전에 꼭 초기화를 해주어야한다.

class InitTest {
	int x; // 인스턴스변수
    int y = x; // 인스턴스변수
    
    void method1() {
    	int i; // 지역변수
        int j = i; // 컴파일 에러!!! 지역변수를 초기화하지 않고 사용했음.
    }
}

변수의 초기화 - 예시

1.2 멤버변수의 초기화
- 멤버변수의 초기화 방법

- 명시적 초기화(explicit initialization)

class Car {
    int door = 4; // 기본형(primitive type) 변수의 초기화
    Engine e = new Engine(); // 참조형(reference type) 변수의 초기화
    
    //...
}

- 생성자(constructor)

Car(String color, String gearType, int door) {
    this.color = color;
    this.gearType = gearType;
    this.door = door;
}

- 초기화 블럭(initialization block)
-> 인스턴스 초기화 블럭 : { }
-> 클래스 초기화 블럭 : static { }

1.3 초기화 블럭(initialization block)
- 클래스 초기화 블럭 : 클래스변수의 복잡한 초기화에 사용되며, 클래스가 로딩될 때 실행된다.
- 인스턴스 초기화 블럭 : 생성자에서 공통적으로 수행되는 작업에 사용되며 인스턴스가 생성될 때 마다 (생성자보다 먼저) 실행된다.

class StaticBlockTest {
    static int[] arr = new int[10]; // 명시적 초기화
    
    static { // 배열 arr을 1~10사이의 값으로 채운다.
        for(int i=0; i<arr.length; i++) {
            arr[i] = (int)(Math.random()*10) + 1;
        }
    }
}

1.4 멤버변수의 초기화 시기와 순서
- 클래스변수 초기화 시점 : 클래스가 처음 로딩될 때 단 한번
- 인스턴스변수 초기화 시점 : 인스턴스가 생성될 때 마다

'기초튼튼 > JAVA' 카테고리의 다른 글

오버라이딩  (0) 2019.06.07
상속  (0) 2019.06.07
생성자  (0) 2019.06.05
변수와 메서드  (0) 2019.06.04
클래스와 객체의 정의와 용도  (0) 2019.06.03