JAVA

객체지향 변수의 초기화

연93 2022. 9. 25. 17:28

지역변수 (lv)는 수동 초기화 해야한다. (사용전 필수)*******

멤버변수(iv,cv)는 자동 초기화 된다. (초기값)

초기화 순서

cv -> iv

자동 -> 간단 -> 복잡

 

클래스 변수 초기화 시점 : 클래스가 처음 로딩(메모리 올라갈때) 단 한번

인스턴스 변수 초기화 시점 : 인스턴스가 생성될 때 마다

class InitTest{
	int x;     // 인스턴스 변수 iv  자동 초기화된다
    int y = x; // 인스턴스 변수 iv  자동 초기화된다
	
void method1(){
	int i;     // 지역변수
    int j = i; // 에러 지역변수를 초기화 하지않았으므로
    //int i = 0; 을 대신 넣어줘야 한다.

초기화 방법

1. 명시적 초기화 ( = ) 대입 연산자를 이용한 초기화

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

2. 초기화 블럭 (복잡한 초기화에 사용한다)  *****자주 사용하지 않음*****

iv -> 인스턴스 초기화 블럭 : {}   

cv -> 클래스 초기화 블럭 : static {}

 

3. 생성자 (복잡한 초기화에 사용한다) (iv 초기화 사용 )

Car(String color, String gearType, int door){ // 매개변수있는 생성자
	this.color = color;
    this.gearType = gearType;
    this.door = door;

----------------------------------------------------------------------------

초기화 사용법

class StaticBlockTest {
	static int[] arr = new int[10]; //명시적 초기화 (간단 초기화) 배열생성.
	
	static { // 클래스 초기화 블럭 - 배열 arr을 난수로 채운다.  cv 복잡 초기화
		for(int i=0; i<arr.length; i++) {
			arr[i] = (int)(Math.random()*10)+1;
		}
	}
}