*멤버변수(iv,cv) 자동 기본값 초기화 but 지역변수 반드시 사용 전 초기화 필수!
왜? 메서드는 그 영역 쓰고 말기 때문에 쓸때마다 덮어쓰는 방식이라 전에 뭐들었는지 몰라서..
*변수타입별 기본값
boolean - false
정수형 - 0
실수형 - 0.0
참조형 - null
1. 명시적 초기화
: = 대입연산자, 간단 초기화
int x = 10; //기본형 초기화
Test t = new Test(); //참조형 초기화
2. 초기화 블럭
class Test{
static{ 클래스 초기화 블럭 } //cv초기화, 클래스 메모리 처음 로딩될 때 한 번만 수행
{ 인스턴스 초기화 블럭 } //iv초기화, 인스턴스 생성할 때 마다 수행
}
3. 생성자
- 멤버변수 초기화 시기, 순서
cv 초기화 시점 : 클래스 메모리 처음 로딩될 때 한 번만 수행
iv 초기화 시점 : 인스턴스 생성할 때 마다 수행
cv 초기화 순서 : 기본값 -> 명시적 초기화 -> 클래스 초기화 블럭
↓
iv 초기화 순서 : 기본값 -> 명시적 초기화 -> (인스턴스 초기화 블럭..안씀)-> 생정자
*인스턴스 변수(iv) 초기화 - 주로 생성자
인스턴스 초기화 블럭 - 모든 생성자에 공통 수행 코드 넣는데 사용
Test(){
count++;
number = count;
}
Test(String sb, String t, int sc){
count++;
number = count;
subject = sb;
type = t;
score = sc;
}
↓
{
count++;
number = count;
}
Test(){}
Test(String sb, String t, int sc){
subject = sb;
type = t;
score = sc;
}'Java' 카테고리의 다른 글
| [Java] 오버라이딩(OverRiding) (0) | 2023.12.20 |
|---|---|
| [Java] 상속(Inheritance), 포함(composite) (0) | 2023.12.20 |
| [Java] this(), this (0) | 2023.12.18 |
| [Java] 생성자(Constructor) (0) | 2023.12.18 |
| [Java] 오버로딩(overloading) (0) | 2023.12.17 |