여태 static을 잘 몰랐었다...
static의 정적이라는 뜻 때문에 static을 상수 개념인가??? 헷갈려 했었는데
오늘 자바의 정석을 보면서 깨달았다.. 나는 훨씬 잘못 알고있었구나...!
이거 때문에 내가 이해 못했던 개념들이 그렇게 많았던 거구나... 아... 인생
그래서 정리 한다!!!!
static 한줄 정리
static은 메모리에 고정적으로 할당되어 모든 인스턴스들이 공통된 값을 유지하게 한다!
static 정리
1. 프로그램 실행 시 메서드 영역 (Method Area)에 생성 되고 프로그램 종료시 없어진다.
자바의 정석 JVM의 메모리 구조(261p) 를 보면 메서드 영역에 클래스 멤버가 생성이 된다.
이 메서드 영역에서 클래스 멤버들이 존재하기에 클래스 변수는 모든 인스턴스가 공통된 저장공간(변수)를 공유할 수 있게된다.
2. 인스턴스를 생성하지 않아도 사용 할 수 있다.
일반적인 인스턴스멤버들은 인스턴스 생성시 Heap영역에 올라가서 그때서야 멤버를 사용할 수 있다.
근데 static을 붙이면 위에서 말했듯이 메서드 영역에 자동으로 생성되기에 굳이 인스턴스화를 안해도 바로바로 사용가능하다!
3. static 메서드 내에 인스턴수 변수를 사용할 수 없다
위와 같은 이유다! 인스턴스변수는 인스턴스가 반드시 존재해야 사용이 가능한데
클래스 메서드를 실행할 때, 인스턴스가 없을 수도 있다. 그래서 이와 같은 상황을 막기 위해 아예 금지됐다.
진짜.. 왜 처음에 잘못 알아서.. 활용도 못하고... 참 그래도 이제 알아서 정말 다행이라고 생각한다
'TIL' 카테고리의 다른 글
TIL 2023-10-27 배열 선언 시 List와 ArrayList (0) | 2023.10.27 |
---|---|
TIL 2023-10-26 boolean으로 for문 조회하기 (0) | 2023.10.26 |
TIL 2023-10-24 Github Pull Request 가이드, 팀 협업!! (0) | 2023.10.24 |
TIL 2023-10-23 Class별 역할 충실히하기 / 키오스크 프로젝트 완료 (0) | 2023.10.23 |
TIL 2023-10-20 깊은 고뇌, 추상 클래스와 인터페이스 차이 (0) | 2023.10.20 |