본문 바로가기

Backend/JAVA

[패캠/JAVA] Static 이해하기

728x90

 

메인(main) 클래스는 객체 생성 없이 실행이 될까?

 

main클래스 동작 방식

① JVM이 실행할 클래스를 찾는다.

② static 키워드가 붙어있는 멤버들을 정해진 메모리(static-zone) 위치에 한번 자동으로 로딩 한다.

    → static멤버들은 클래스를 사용하는 시점에서 딱 한번 메모리에 로딩된다는 점이 중요하다.

    → 여기서는 main() 메서드가 static 이기 때문에 메모리에 자동으로 로딩 한다.

③ JVM이 static-zone에서 main()메서드를 호출한다.

④ 호출된 메서드를 Call Stack Frame Area(Stack Area)에 push(기계어코드를 넣고) 한 뒤 동작을 시작한다

 

Call Stack Frame Area(Stack Area)란?

- 메서드가 호출되면 호출된 기계어코드가 push되고 실행되는 메모리공간

- 현재 프로그램이 실행되고 있는 상태를 파악할 수 있다.

- LIFO(Last-In-First-Out) 구조이다.

 

 => Static은 클래스를 사용하는 시점에서 딱 한번 메모리에 로딩하기 위해서 사용하는 키워드이다!

 

none-static 메서드 접근하기

같은 메모리에 올라와 있지 않기 때문에 아래와 같이는 접근할 수 없다.

아래와 같이 객체를 생성해서 메모리에 로딩 시켜야 한다.

 

  • static 멤버접근 방법
    • static 멤버는 클래스를 사용하는 시점에서 자동으로 static-zone에 로딩된다. 따라서 new를 이용해서 객체를 생성할 필요가 없다.
    • 클래스이름.호출메서드
  • none-static 멤버접근 방법
    • 객체를 생성하여 접근

 

 

728x90

'Backend > JAVA' 카테고리의 다른 글

[패캠/JAVA] 자바 상속  (0) 2023.08.08
[패캠/JAVA] JVM 메모리 모델  (0) 2023.08.01
[패캠/JAVA] VO(DTO)클래스 잘 설계하기  (0) 2023.08.01
[패캠/JAVA] 자바 패키지(Package)  (0) 2023.07.31
[패캠/JAVA] 객체 접근 권한  (0) 2023.07.25