2021. 10. 1. 16:21ㆍJAVA 공부
이번에는 Static 에 대해서 알아 보겠습니다.
이미 학원에서 공부할 때 알아 보았었는데, 그 때는 이론적인 부분보다 어떻게 사용하는지 에 대해서 알아 봤었기 때문에, 이번에는 이론적인 측면에서 알아 봅시다.
Static 이란 무엇인가 ?
- Static 은 다른 말로 정적 변수 라고 한다.
- Static 은 클래스 내부 변수나 메서드에 키워드로 사용된다.
- Static 을 사용한 변수나 메서드는 클래스가 메모리에 올라갈 때 자동으로 생성이 된다.
- Static 변수는 메모리에 올라갔을 때, 딱 1번만 할당 된다.
- Static 변수는 모든 곳에서 참조해서 사용할 수 있기 때문에, 공통으로 사용하는 자원 이라고 생각할 수 있다.
- Static 변수는 Static Memory area 에 할당 된다.
※ Static Memory area
· Static 키워드를 사용한 변수, 메서드 들이 저장되는 곳이다.
· 프로그램의 시작부터 종료가 될 때까지 메모리가 남아 있다. 그렇기 때문에 Static을 남발한다고 좋은 것이 아니다.
Static 의 사용 이유 ?
- 공통적으로 관리되는 자원 이기 때문에, 어디에서나 접근할 수 있는 장점을 가지고 있다.
- 클래스 내에 사용한 Static 변수, 메서드 는 해당 클래스를 동적할당 하지 않고, 클래스:(static변수 or static메서드) 로 바로 사용할 수 있기 때문에 빠르고 편하다.
- 예를 들어 변하지 않는 고정 값 ( PI = 3.141592 ... ) 을 변수로 만든다고 생각해보자. 그리고 이를 클래스 내에 멤버변수로 만든다고 생각 해보자. 그런데, 만든 곳 뿐 아니라 다른 클래스에서도 PI 를 사용해야 한다. 그러면 PI 를 사용하려고 하는 클래스마다 전부 멤버변수로 만들어 줘야 된다. 그러면 이는 메모리의 낭비가 되는 것이다. 이럴 경우 static 을 사용해서 PI 를 만들었다면, 단 1개를 만들고, 이를 사용하는 것이다.
- static 을 사용한 클래스를 여러 번 동적할당 한다고 해도, static 변수, 메서드 이미 생성되어 있고, 더 이상 생성되지 않는다. ( "이미 생성되어 있다" 라는 말은 프로그램 실행 순서 상, static 은 미리 생성 되기 때문이다 )
Static 사용 시 주의점
- 위에서 언급했다 싶이 Static 키워드를 사용한 메서드는 미리 생성 되어 있다.
- 즉 Static 메서드 내에서 해당 클래스의 멤버변수를 사용할 수 없다. 뿐만 아니라 프로그램의 실행 순서상 Static Memory area 에 Static 변수, 메서드 들이 먼저 생성되기 때문에, 이 때 실행 순서상 생성되어 있지 않은 heap , stack 영역에 있는 변수 를 사용할 수 없다 ( = 인스턴스 변수 사용 x )
Static 사용이 유용한 경우
- 공통적으로 값을 유지해야하는 데이터
- 일반 변수( 인스턴스 변수 ) 를 사용하지 않는 메서드(함수)
※ 사실 우리가 사용하는 라이브러리 함수들은 Static 메서드인 것들이 꽤 많다.
ex) Arrays.toString(), Math.random() 등등 ....
'JAVA 공부' 카테고리의 다른 글
ORM(Object Relational Mapping) ? (0) | 2021.10.13 |
---|---|
Java 1.8 변경사항 (0) | 2021.10.01 |
Java에서 Poi 라이브러리 다운로드 및 사용 (0) | 2021.03.29 |
Day29 - Thread 쓰레드 (0) | 2021.03.26 |
Day27 - 정규식 표현법 (0) | 2021.03.24 |