금융에 대한 모든 것

 보통 변수나 메서드들이 정의된 것들을 보면 static 붙은 것도 있고 붙지 않은 것들이 있습니다. 아닌 것처럼 느껴질 있지만 static 붙고 붙고에 따라서 코드가 동작하는 방식에 차이가 생깁니다. 그러면 직접 코드를 작성하여 동작하는 방법을 보면서 static non static 차이를 알아보겠습니다.

 

 코드 실행 과정

 코드는 JVM으로 보내져서 런타임 데이터 에리어(Runtime data area)라는 메모리 영역에서 해석이 됩니다. 그곳에는 메서드 영역, 스택 영역, 영역 3가지의 메모리 영역으로 나누어져 변수와 메서드들이 저장됩니다.

 

 코드를 실행하면 먼저 static 멤버들이 메서드 영역에 저장되게 됩니다. static 메서드들은 메서드가 저장된 메모리의 주소가 저장됩니다. static 메서드의 멤버 변수와 관련 정보들은 스택 영역에 각각 저장됩니다. static 멤버들로 설정해줌으로써 코드에서 정의한 변수들과 메서들이 모두 메모리에 올라가 있는 모습니다.

 

하지만 static이 붙지 않은 멤버, 인스턴스 멤버는 메모리에 올라가지 않습니다.

 

 위와 같이 method static 지우면 오류가 나는 것을 확인할 있습니다. 이유는 method 인스턴스 메서드가 되어 버려 메모리에 올라가 있지 않기 때문입니다. 따라서 메서드가 어떤 정보를 가지고 있는지 없기 때문에 컴파일되지도 않습니다.

 

 

마찬가지로 변수 num에서 static 지워보니 num 쪽에서 오류가 나는 것을 확인할 있습니다.

 

그러면 인스턴스 멤버들은 어떻게 해야 사용할 있을까요이에 관해서는 다음 포스팅에서 설명하겠습니다.

반응형