[Java] 변수 초기화(명시적, 생성자, 초기화블럭)

2023. 12. 18. 23:31·Java

*멤버변수(iv,cv) 자동 기본값 초기화 but 지역변수 반드시 사용 전 초기화 필수!

왜? 메서드는 그 영역 쓰고 말기 때문에 쓸때마다 덮어쓰는 방식이라 전에 뭐들었는지 몰라서..

 

*변수타입별 기본값

boolean - false

정수형 - 0

실수형 - 0.0

참조형 - null

 

1. 명시적 초기화 

 :   = 대입연산자, 간단 초기화

int x = 10;           //기본형 초기화
Test t = new Test();  //참조형 초기화

 

2. 초기화  블럭

class Test{
	static{ 클래스 초기화 블럭 }  //cv초기화, 클래스 메모리 처음 로딩될 때 한 번만 수행
	{ 인스턴스 초기화 블럭 }  //iv초기화, 인스턴스 생성할 때 마다 수행
}

3. 생성자 

https://bbbpp.tistory.com/73

 

 

- 멤버변수 초기화 시기, 순서

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
'Java' 카테고리의 다른 글
  • [Java] 오버라이딩(OverRiding)
  • [Java] 상속(Inheritance), 포함(composite)
  • [Java] this(), this
  • [Java] 생성자(Constructor)
Naah
Naah
  • Naah
    blueprint
    Naah
  • 전체
    오늘
    어제
    • 분류 전체보기 (106)
      • Java (28)
      • Kotlin (0)
      • TypeScript (7)
      • React (22)
      • Next.js (1)
      • Spring (22)
      • JPA (12)
      • Spring Data JPA (6)
      • Querydsl (1)
      • Error (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
    • manage
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Naah
[Java] 변수 초기화(명시적, 생성자, 초기화블럭)
상단으로

티스토리툴바