[작성일: 2023. 01. 26]
목차
변수의 초기화
- 지역변수(lv)는 수동초기화 해야 함(사용 전 꼭!!!!)
- 메서드는 호출 스택에 계속 쌓였다가 지워졌다가 하기 때문에 생명주기가 굉장히 짧음. 매번 0으로 초기화하면 성능이 떨어지기 때문에 새로운 값으로 덮어써야 함. (수동 초기화)
- 멤버변수(iv, cv)는 자동 초기화됨.
- 타입마다 다르지만 근본적으로는 0으로 초기화됨.
class InitTest { int x; // 인스턴스 변수, 자동 초기화 int y = x; // 인스턴스 변수(iv) void method1() { int i; // 지역변수(lv) int j = i; // 에러. 지역변수를 초기화하지 않음.
멤버변수(iv, cv)의 초기화
- 클래스 변수(cv): 클래스가 처음 로딩될 때 단 한 번 초기화함.
- static {} 사용
- 인스턴스 변수(iv): 인스턴스가 생성될 때마다 초기화함.
- 생성자 사용
class InitTest { static int cv = 1; // 명시적 초기화(간단 초기화) int iv = 1; // 명시적 초기화 static { cv = 2l } // 클래스 초기화 블럭 { iv = 2; } // 인스턴스 초기화 블럭(잘 안 씀) InitTest() { // 생성자 iv = 3; } }
명시적 초기화(=), 간단 초기화
- 선언 시 대입 연산자 사용
class Car { // iv를 대입연산자로 초기화 int door = 4; // 기본형 변수의 초기화 Engine e = new Engine(); // 참조형 변수의 초기화
초기화 블럭, 복잡한 초기화
- 객체 생성 시 무조건 실행되는 함수
class StaticBlockTest { static int[] arr = new int[10]; // 명시적 초기화 static { // 클래스 초기화 블럭 - 배열 arr을 난수로 채움 for(int i=0; i<arr.length; i++) { arr[i] = (int)(Math.random()*10)+1; } } }
static { } | - 무조건 최초에 한 번만 실행되는 함수 - 클래스(cv) 초기화 블럭 |
{ } | - 객체가 생성될 때마다 생성자보다 먼저 실행되는 함수 - 생성자들마다 공통적으로 실행하는 내용 - 인스턴스(iv)초기화 블럭 / (거의 안 씀) |
생성자
- iv 초기화, 복잡한 초기화에 사용
Car(String color, String gearType, int door) { // 매개변수가 있는 생성자 this.color = color; this.gearType = gearType; this.door = door; }

🐣 해당 게시글은 자바의 정석(남궁성 님) 영상으로 함께 공부하며 요약/정리한 글입니다.
🐣 입문 개발자가 작성한 글이므로 틀린 내용이나 오타가 있을 수 있습니다.