(2022-12-29) 이것이 자바다 CH 6.9~6.15 _ 정적(Static) 변수의 초기화는 언제되는가??

C one·2022년 12월 29일
  • CH 6.9~6.15

/ 정적(Static) 변수의 초기화는 언제되는가??

  • 내가 생각한 순서 : 클래스가 메모리 로딩 → 인스턴스 멤버 선언 → 객체 생성 → 생성자 실행 → 객체의 참조변수를 통한 접근

  • 인스턴스 멤버의 경우 : 인스턴스 멤버 선언 → 객체 생성 → 생성자 실행 → 객체의 참조변수를 통한 접근 / 이 과정을 거쳐야 사용할 수 있엇다

  • 정적 멤버의 경우 : 클래스가 메모리 로딩(정적 멤버 선언 + 정적 블록 실행) / 되면 ****정적멤버는 사용 할수 있다,

  • 즉 생성자에서 초기화 작업 하지 않는다 ⇒ 그렇다면 정적멤버 선언시 초기값 제공하지 않았다면 어디서 초기값으로 초기화가 되는것인가???

  • 인스턴스멤버 : 초기값을 제공하지 않을 경우 객체 생성시 자동으로 초기값으로 초기화 된다 (p.214) + 선언만 하고 클래스 내부에서 사용하려 하면 컴파일 에러 not a statement

  • 정적멤버는어떤가 ?? 초기값 제공하지 않고, 클래스.정적필드 출력했을 때 초기값으로 초기화 된 값이 출력되었음

  • 정적 멤버는 인스턴스 멤버와는 다른 과정으로 초기화 될 것이라 생각해서 구글링 해보았다

JVM이 클래스 로딩시 다음 과정을 따른다

  1. 클래스가 로드되고 연결됨
  2. 초기화 단계를 거치고
  3. 메인 메소드 호출
  • 자바에서 정적 변수를 클래스 변수라고 부름, 특정한 인스턴스가 아니라 클래스에 속하기 때문에
  • 그렇기 때문에 class initialization 이 정적 클래스 변수를 초기화 하게 된다
public class StaticVariableDemo {  
public static int i;
public static int j = 20;
                        
public StaticVariableDemo() {}
}
profile
🌽

1개의 댓글

comment-user-thumbnail
2022년 12월 30일

이것이 자바다 공부하시고 계시군요!! 너무 좋습니다. 저도 해당 책을 가지고 있기는 한데....
시원님을 따라 저도 열심히 공부해보도록 하겠습니다!

한 해 마무리 잘하시고 저와는 내년에 또 뵈어요~ : >

답글 달기