변수의 초기화
2025. 2. 21. 16:58ㆍJava/객체지향
변수의 초기화
- 변수 초기화: 변수를 처음 만들고 값을 저장하는 것
- 멤버 변수(메서드영역)와 배열(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;
}
}