본문 바로가기

Java/[패스트캠퍼스] 100% 환급 챌린지

패스트캠퍼스 환급챌린지 35일차 미션 (3월 6일) : 시그니처 백엔드 Path 초격차 패키지 Online. 강의 후기

https://fastcampus.co.kr/dev_online_besignature
수강 강의명

강의 내용

[1] static과 none static 멤버들의 접근 방법
[2] static과 none static 멤버들의 접근 방법(2)

 

[1] static과 none static 멤버들의 접근 방법

static 멤버 : 자동으로 메모리 Method Area의 static-zone에 올라오게 된다.

none static 멤버 : static이 아니기 때문에 자동으로 메모리 Method Area의 static-zone에 올라올 수 없다.

Q. NoneStaticTest 메인 클래스를 만들고 동작 원리를 이해하시오.

(1) 클래스 실행 : JVM이 static 키워드가 붙은 멤버들을 메모리에 올린다.
                               main은 자동으로 Method Area의 static-zone에 올라오게 된다.
                               static 키워드가 붙지 않은 멤버들은 메모리에 올라오지 않게 된다.

                               static 메서드와 none static 메서드는 같은 메모리 공간에 있지 않기 때문에 호출할 수 없다.
(2) 객체를 생성하여 none static인 메서드를 메모리에 로딩시킨다.

static 메서드 : main에서 객체를 생성하지 않고 바로 호출 가능
none static 메서드 : main에서 객체를 생성한 후 점 연산자로 호출 가능

public class NoneStaticTest {
     public static void main(String[] args) {
          int a = 10;
          int b = 20;
          
          NoneStaticTest st = new NoneStaticTest();
          int sum = st.hap(a, b);
          System.out.println(sum);
     }

     public int hap(int a, int b) {
          int v = a + b;
          return v;
     }
}

 

[2] static과 none static 멤버들의 접근 방법(2)

(1) main 메서드 호출
(2) 객체 생성 : 객체가 Heap Area에 생성된다.
       원래 메인 클래스는 생성할 필요가 없지만,
       none static 메서드는 자동으로 메모리에 생성되지 않기 때문에 객체를 생성하여 메모리에 올려야 한다.

       *new 연산자를 이용하여 객체를 생성하면 객체가 Heap Area에 생성된다.
       *Heap Area : 객체가 생성(new)되는 메모리 공간
(3) 생성자
        main(static 멤버)은 객체를 생성할 때 메모리에 올리지 않는다.

              static 멤버는 클래스를 실행할 때 자동으로 메모리에 로딩된다.

              main은 static이므로 이미 Method Area(메모리)에 올라와 있는 상태이다.
              이미 메모리에 올라왔기 때문에 객체를 생성할 때 main를 다시 생성하지 않는다.

       none static 멤버는 객체를 생성할 때 생성자 메서드에 의해 메모리에 올라오게 된다.
              Method Area의 none static-zone에 메서드의 기계어 코드가 올라온다.
                   모든 메서드의 기계어 코드는 Method Area에 할당된다.

              Heap Area의 포인터는 기계어 코드의 메모리 번지를 가리킨다.
                   main에서 만들어진 객체(변수)는 Heap Area에 생성된 객체의 번지를 가리킨다.
(4) none static 메서드 호출
      일반적으로 클래스를 사용하는 방법과 동일하다.
      포인터에 의해 Method Area에 올라온 기계어 코드가 실행된다.

 


 

수강 화면수강 화면
수강 화면



본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
https://bit.ly/48sS29N

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr