-
변수의 초기화와 멤버변수의 초기화공부/Java 2024. 1. 8. 22:41
변수의 초기화와 멤버변수의 초기화
변수의 초기화
변수를 선언하고 처음으로 값을 저장하는 것
멤버변수는 초기화를 하지 않아도 자동적으로 변수의 자료형에 맞는 기본값으로 초기화된다.
각 타입의 기본값(default value)
각 타입의 기본값 (default value) 자료형 기본값 boolean false char '\u0000' byte, short, int 0 long 0L float 0.0f double 0.0d 또는 0.0 참조형 null
a-newdream.tistory.com
하지만 지역변수는 사용 전 반드시 초기화를 해야한다.
예시
class InitTest { int x; int y = x; void method1() { int i; int j = i; } }
위 코드에서 x, y는 인스턴스 변수이고, i, j는 지역변수다.
인스턴스 변수 x는 초기화를 하지 않아도 자동적으로 int형의 기본값인 0으로 초기화되므로, int y = x;가 가능하다.
method1()의 지역변수 i는 자동적으로 초기화되지 않는다.
초기화되지 않은 상태로 변수 j를 초기화 하는데 사용하려 하면, 컴파일에서 에러가 발생한다.
멤버변수(클래스 변수와 인스턴스 변수)와 배열의 초기화는 선택이지만, 지역변수의 초기화는 필수이다.
멤버변수의 초기화
멤버변수는 각 타입의 기본값으로 자동 초기화 된다.
그 다음 명시적 초기화, 초기화 블럭, 생성자의 순서로 초기화가 된다.
또한 클래스 변수(cv)가 인스턴스 변수(iv)보다 먼저 초기화 된다.
초기화 순서
1. 클래스 변수(cv) 초기화 → 인스턴스 변수(iv) 초기화
2. 자동 초기화 → 명시적 초기화(간단) → 초기화 블럭, 생성자(복잡)명시적 초기화 (explicit intialization)
변수를 선언과 동시에 초기화하는 것
대입연산자(=)를 사용한다.
가장 기본적이면서 간단한 초기화 방법이다.
예시
class Car { int door = 4; Engine e = new Engine(); }
위 코드에서 door는 기본형 변수의 초기화, e는 참조형 변수의 초기화다.
현재 e는 자리만 있고, 값은 없는 상태다(null)
객체를 만들어 넣어줘야 명시적 초기화가 최종적으로 완료된다고 할 수 있다.
초기화 블럭 (initialization block)
클래스 변수 초기화 시점 : 클래스가 처음 로딩될 때 한 번
인스턴스 변수 초기화 시점 : 인스턴스가 생성될 때 마다
클래스 초기화 블럭 클래스 변수의 복잡한 초기화에 사용
인스턴스 초기화 블럭 인스턴스 변수의 복잡한 초기화에 사용초기화 블럭을 작성하려면, 인스턴스 초기화 블럭은 단순히 클래스 내에 블럭{}을 만들고 그 안에 코드를 작성하면 된다.
클래스 초기화 블럭은 인스턴스 초기화 블럭 앞에 static을 붙이기만 하면 된다.
'공부 > Java' 카테고리의 다른 글
싱글톤(Singleton) (0) 2024.01.12 각 타입의 기본값(default value) (0) 2024.01.08 객체 자신을 가리키는 참조변수 this (4) 2024.01.04 생성자 this() (4) 2024.01.04 오버로딩 (overloading) (0) 2023.12.29