TIL | JAVA 변수의 초기화 / 멤버변수의 초기화

김윤희·2022년 8월 1일
0

변수의 초기화 / 멤버변수의 초기화

변수의 초기화


  • 지역변수(lv)는 수동 초기화 해야함 (사용전에 꼭)
  • 멤버변수(iv, cv)는 자동 초기화 된다
class InitTest{
	int x;		//인스턴스 변수
    int y = x;	//인스턴스 변수(자동초기화 돼서 x의 기본 값 0이 y에 대입된다)
    
    void method1(){
    	int i;		//지역변수
        int j =i;	//에러!! 지역변수를 초기화하지 않고 사용
    }
}


멤버변수(iv, cv)의 초기화


✔ 멤버변수(iv, cv)의 초기화는 총 세가지로 나뉜다
1. 자동초기화(타입별 기본값으로 초기화)
2. 간단 초기화(= 대입연산자 사용)
3. 복잡 초기화(static{} or 생성자)

  • 명시적 초기화 (=)
class Car{
	int door = 4;				//기본형 변수 초기화
    Engine e = new Engine();	//참조형 변수의 초기화
}
- 참조형 변수는 null 기본값이나 객체주소 둘 중 하나가 들어가는데,
위의 경우 Car c = new Car();를 했을때, Engine e = new Engine();
이렇게 객체를 생성해서 넣어주지 않으면 참조변수는 null 값이 들어가게 된다.
그렇다면 차 객체가 생성되면 엔진은 생성되지 않고 null인 상태이기 때문에
위와 같이 참조형 변수를 초기화 해주어야한다
  • 초기화 블럭
    • 인스턴스 초기화 블럭 : { }
    • 클래스 초기화 블럭 : static { }
class StaticBlock{
	//간단 초기화
	static int[] arr = new int[10]; //명시적 초기화
    
    //복잡 초기화
    static{//클래스 초기화 블럭 - 배열 arr을 난수로 채운다
    	for(int i=0; i<arr.length;i++){
        	arr[i] = (int)(Math.random()*10)+1;
        }
    }
}
  • 생성자
 Car (String color, String  gearType, int door){	
    	this.color = color;
        this.gearType = gearType;
        this.door = door;
    }

초기화 순서
1. cv 👉 iv
클래스 변수에서 인스턴스 변수로 초기화 되고 클래스 변수는 초기화 되면 다음 객체 생성 시 초기화 되지 않고 인스턴스 변수만 초기화된다
2. 자동 👉 간단 👉복잡

0개의 댓글