Java

[Java] Static에 관한 이야기..

God Korea 2022. 7. 18. 22:46
728x90

Advanced Java 과정을 들으며..

 이번에 자바 강의를 들으면서 Static에 대해서 다시 정리하고자 한다.

이전에는 static에 대해서 단순히 static 메모리에 저장해서 서로 공유한다는 내용만 적었는데, 그보다 훨씬 심오한 제어자라는 걸 알게 됐다. 그리고 오히려 이전의 글은 약간의 오해도 불러일으킬만 하다고 생각되어서 약간의 수정도 곁들일 예정이다. 이전 글은 아래를 참고해주면 좋겠다.

2022.07.09 - [프로그래밍 언어] - [Java] Private과 Static이 공존할 수 있다!?

 

[Java] Private과 Static이 공존할 수 있다!?

😐 나만 볼 거야, 'Private'  자바에는 여러 접근제어자가 있다. Public Default Protected Private  제어 범위는 이름 그대로 생각하면 된다. 지시자 클래스 내부 동일 패키지 상속받은 클래스 이외의 영역

codari.tistory.com

Static이 뭐야?

 static은 바인딩 모디파이어라고 해서 그대로 해석하면 '모아두기 위한 수정자'라고 볼 수 있다. 풀어서 설명해도 어려운데 이렇게 짧게 적어두면 감도 안오는 것이 정상이다. 

 개념을 먼저 설명하면, 일전에 말했던 대로 static이 입력된 메서드나 변수는 네이티브 메서드 스택이라는 저장 공간에 따로 저장되어서 이용하게 된다. 근데 이 네이티브 메서드 스택이라는 것은 JVM이 어플리케이션을 실행하면서 동시에 실행하는 공간이다. 즉, 어플리케이션이 동작하면서 함께 메모리에 올라가서 바로 이용할 수 있는 공간인 것이다. 
 쉽게 설명하면, 붙박이장을 생각하면 쉽다. 집을 사고 나서, 원래는 가구를 구매해서 배치하고 사용해야 하는데에 반해, 붙박이 가구들은 집을 사면서 바로 이용할 수 있는 가구들이다. 별도로 코스트를 지불하지 않고 (엄연히 말하면 메모리를 먹기 때문에 코스트를 지불하지 않는 것은 아니지만..) , 객체 생성 명령어인 new 없이 바로 객체 안에 내용을 이용할 수 있게 된다는 것이다.

 그래서 private과 static은 서로 전혀 상관이 없는 것이다. 이전에 애매모호하게 잘못된 글을 보셨다면, 이번 글을 통해서 좀 더 확실하게 static에 대해서 알고 갔으면 좋겠다.

728x90