자바의 정석 Chapter 6 변수 초기화

MinJee Lee·2022년 2월 22일
0

Java

목록 보기
1/10
post-thumbnail

😎 변수의 초기화란

변수를 선언하고 처음으로 값을 저장하는 것

맴버 변수 : (클래스 변수와 인스턴스 변수)와 배열의 초기화 → 선택적

지역 변수: 사용하기 전 반드시 초기화 → 필수적

각 Type의 기본값(default value)

자료형기본값
booleanfalse
char'\u0000'
byte, short, int0
long0L
float0.0f
double0.0d 또는 0.0
참조형 변수null

👉 맴버 변수의 초기화 방법

  1. 명시적 초기화 (explicit initalization)
  2. 생성자 (constructor)
  3. 초기화 블럭(initalization block)
    1. 인스턴스 초기화 블럭 : 인스턴스 변수를 초기화 하는데 사용.

    2. 클래스 초기화 블럭 : 클래스변수를 초기화 하는데 사용.

      6.2 명시적 초기화 (explicit initalization)

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

      기본형 변수 초기화 ‘=’ 는 간단 초기화

      참조형 변수 초기화는 객체를 만들어야 함

      6.3 초기화 블럭 (initalization block)

      클래스 초기화 블럭 : 클래스변수의 복잡한 초기화에 사용된다.

      인스턴스 초기화 블럭 : 인스턴스변수의 복잡한 초기화에 사용된다.

      class InitBlock {
      			static { //클레스 초기화 블럭 }
      public BlockTest(){ //인스턴스 초기화 블럭 }
      }
    3. 자동 초기화 (cv, iv 초기화) → 0

    4. 간단 초기화 =

    5. 복잡 초기화 { } 거의 사용 안함

      1. cv → static {}
      2. iv → 생성자 {}

    🤔 6.4 멤버변수의 초기화 시기와 순서

--
클래스 변수의 초기화 시점클래스가 처음 로딩될 때 단 한번 초기화
인스턴스변수의 초기화 시점인스턴스가 생성될 때마다 각 인스턴스별로 초기화
클래스변수의 초기화 순서기본값 → 명시적 초기화 → 클래스 초기화 블럭
인스턴스변수의 초기화 순서기본값 → 명시적 초기화 → 인스턴스 초기화 블럭 → 생성자
public class InitTest {
   static int cv = 1;    //명시적 초기화
   int iv = 1;            //명시적 초기화
   static { cv = 2; }    //클래스 초기화 블럭
   { iv = 2; }            //인스턴스 초기화 블럭
   InitTest() {        //생성자
       iv = 3;
   }
}

이 게시물은 자바의 정석 책을 요약한 내용입니다.

1개의 댓글

comment-user-thumbnail
2022년 7월 17일

잘 보고 갑니다~

답글 달기