변수의 초기화

2025. 2. 21. 16:58Java/객체지향

변수의 초기화

  • 변수 초기화: 변수를 처음 만들고 값을 저장하는 것
  • 멤버 변수(메서드영역)와 배열(heap)의 초기화는 선택적이지만, 지역 변수(stack)의 초기화는 필수적이다.
  • 멤버 변수의 초기화 방법 : 명시적 초기화, 초기화 블럭, 생성자

1. 명시적 초기화

  • 변수 선언과 동시에 초기화하는 것

 

2. 초기화 블럭

  • 초기화 작업이 복잡하여 명시적 초기화만으로는 부족한 경우에 초기화 블럭을 사용한다
  • 클래스 초기화 블럭: static { }
    • 클래스변수의 복잡한 초기화에 사용된다.
    • 클래스가 메모리에 처음 로딩될 때 단 한번만 수행됨
    • static { }
  • 인스턴스 초기화 블럭: { }
    • 인스턴스변수의 복잡한 초기화에 사용된다.
    • 인스턴스를 생성할 때 마다 수행됨.
    • 생성자보다 인스턴스 초기화 블럭이 먼저 수행된다.
public class Product {
    private String name;
    private int price;
    private static String brand;

    //초기화 블록
    
    //인스턴스 초기화 블록
    {
        name="사이언";
        price=100;
    }
    //static 초기화 블록
    static {
        brand = "엘지";
        //name = "아이폰";
        //price = 150;
    }

    public Product() {
    	//기본 생성자 
    }
    public Product(String name, int price, String brand) {
        //매개변수 생성자 
        this.name = name;
        this.price = price;
        Product.brand = brand;
    }
}

3. 생성자

 

생성자

1. 생성자란? 생성자는 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드'이다.생성자의 조건생성자의 이름은 클래스의 이름과 같아야한다.생성자는 리턴 값이 없다.Card c = new Card();연산

hnjee.tistory.com

 

 

4. 멤버변수의 초기화 시점과 순서

  • 초기화 시점
    • 클래스변수: 클래스가 처음 로딩될 때 단 한번 초기화
    • 인스터스변수: 인스턴스가 생성될 때 마다 각 인스턴스별로 초기화가 이루어진다
  • 초기화 순서

 

 

public class Product {
    private String name = "갤럭시"; //명시적 초기값, 1번째
    private int price;
    private static String brand;

    //초기화 블록
    //static 초기화 블록  //2번째 
    static {
        brand = "엘지";
        //name = "아이폰";
        //price = 150;
    }

    //인스턴스 초기화 블록 //3번째
    {
        name="사이언";
        price=100;
    }
   
    // 생성자
    public Product() { //4번째
    	//기본 생성자 
    }
    public Product(String name, int price, String brand) {
        //매개변수 생성자 
        this.name = name;
        this.price = price;
        Product.brand = brand;
    }
}