Java Construct & Initialize - 놓치기 쉬운 개념들

이강현·2025년 4월 4일

new 연산자와 생성자

다음과 같은 단계로 인스턴스가 만들어진다고 생각해 볼 수 있습니다.

  1. new 연산자가 클래스 정의를 보고 메모리에 공간을 할당하고, 그 참조값생성자에게 인자로 넘겨줍니다.
  2. 생성자는 new 연산자가 넘겨준 인스턴스의 참조값을 통해 인스턴스 변수같은 메모리 공간에 접근하여 필요한 초기화 작업을 합니다.
  3. 마지막으로 생성자는 인스턴스의 참조값(this)을 반환합니다.
public class ConstructInitialize {
	public static main(String[] args) {
    	MyClass myClass = new MyClass();
        /*...*/
    }
}
class MyClass {
//    일반적인 메서드처럼 비유하자면 생성자는 이런식으로 동작할 것입니다.
//    MyClass MyClass(MyClass this /* <- new 연산자가 넘겨줍니다 */) {
//	      /*...필요한 초기화 작업...*/
//        return this;
//    }
}



Initialize

멤버 변수의 모든 초기화 방법을 예시와 함께 설명합니다.

class initTest {
    static int cv = 1;
    int iv = 1;
    static { cv = 2; }
    { iv = 2; }
    InitTest() {
        iv = 3;
    }
}
클래스 초기화 클래스 초기화 클래스 초기화 인스턴스 초기화 인스턴스 초기화 인스턴스 초기화 인스턴스 초기화
기본 값 명시적 초기화 클래스 초기화 블록 기본 값 명시적 초기화 인스턴스 초기화 블록 생성자
cv = 0 cv = 1 cv = 2 cv = 2
iv = 0
cv = 2
iv = 1
cv = 2
iv = 2
cv = 2
iv = 3
1 2 3 4 5 6 7
  • 인스턴스 초기화 블럭은 생성자와 기능이 겹치기 때문에 잘 사용하지 않습니다. 알아야 할 것은 인스턴스 초기화 블럭이 생성자보다 먼저 실행된다는 것입니다.
profile
백엔드 개발자 지망생입니다.

0개의 댓글