1. Static
개념
- static은 변수나 메소드에 키워드로 사용
- static 키워드를 사용한 변수는 클래스나 메모리에 올라갈 때 자동으로 생성 👉 즉, 인스턴스(객체) 생성 없이 바로 사용 가능 👉 그러므로, 객체를 생성하지 않아도 되니까 편리하고 속도도 빠름
static 변수란 ?
- 메모리 공간에 하나만 존재하며, 어디서나 접근이 가능
- 어디서나 접근 가능 👉 static 변수도 public으로 선언
- 클래스 내부에서는 얼마든지 직접 접근 가능
- 클래스 외부에서는 인스턴스의 이름이나 클래스의 이름을 통해 접근하는 것도 가능 👉 default 변수 일땐 동일한 패키지로 묶였을 경우
static final
- 클래스 내부 또는 외부에서의 참조 용도로만 선언된 변수는 static final로 선언
ex ) static final double PI = 3.14;
static 키워드를 사용하는 이유
- 자주 변하지 않는 일정한 값이나 설정 정보 같은 공용자원에 대한 접근에 있어서 매번 메모리에 로딩하거나 값을 읽어들이는 것보다 일종의 '전역변수' 와 같은 개념을 통해서 접근하는 것이 비용도 줄이고 효율을 높일 수 있음
- 인스턴스 생성 없이 바로 사용 가능하기 때문에 프로그램 내에서 공통으로 사용되는 데이터들을 관리 할 때 이용
🔍 공통으로 사용 되는 변수 예시
- 위에 코드를 보면 FavoriteCoffee 클래스의 coffee 변수를 "아메리카노"로 설정
- kate.coffee = "라떼"; 👉 커피 변경
static 함수와 instance 함수의 차이
- instance 함수는 new 연산자로 객체를 생성한 후, 함수를 호출해야함
- static 함수는 클래스 이름만을 가지고 바로 호출 가능
- totalArea() 함수는 인스턴스 변수 사용 가능
- 하지만, totalArea2()는 static 함수이기 때문에 인스턴스 변수 사용 불가 👉 staticTotalArea() 함수처럼 인수로 데이터를 넘겨받아서 계산해야함
- 반대로 , 인스턴스 변수나 인스턴스 함수에서는 static이 붙은 멤버들 언제나 사용 가능 👉 이유 ? 인스턴스 변수가 존재한다는 것은 static이 붙은 변수가 이미 메모리에 존재하는 것을 의미
출처 :
1. ifContinue , 2017. 7. 19 , https://ifcontinue.tistory.com/2
2. 공부하는 소햐 블로그, 2019. 3. 8, https://goodncuteman.tistory.com/4
정리
- static은 멤버변수, 메서드, 초기화 블럭에서 사용 가능
출처 : SenseG , 2012. 8. 16 , https://blog.daum.net/gunsu0j/56