- Static이란?
- Static이란 고정된 의미
- Static이라는 키워드를 사용하여 Static변수와 메서드를 만들수 있음
- 정적 필드 + 정적 메서드 = 정적 멤버(클래스 멤버)
- 정적 필드와 메서드는 객체에 소속된 멤버가 아니라 클래스에 고정된 멤버
- 클래스를 로딩해서 메서드 메모리 영역에 적재할 때 클래스별로 관리
- 따라서, 클래스의 로딩이 끝나는 즉시 바로 사용
- 정적(Static) 멤버 생성
- Static 키워드를 통해 생성된 정적 멤버들은 Heap 영역이 아닌 Static 영역에 할당
- Static 영역에 할당 된 메모리는 모든 객체가 공유하여 하나의 멤버를 어디서든지 참조
- 다만, Garbage Collector의 관리 영역 밖에 존재 하기에 Static영역에 있는 멤버들은 프로그램 종료시 까지 메모리가 할당된 채로 존재 => Static을 많이 사용하면 시스템 성능이 떨어짐
- 정적(Static) 멤버 선언
- 필드와 메서드를 생성 시 인스턴스 VS 정적으로 생성할 것인지 판단 기준은 공용으로 사용 여부로 나뉨
- 그냥 생성 한다면 자동으로 인스턴스로 생성되며, 정적으로 생성하려면 필드와 메서드 선언 시 Static이라는 키워드를 추가하면 됨
- 정적 메서드 사용 예시
class Player{
static void print() {
System.out.println("야구선수 이승엽입니다.");
}
void print2() {
System.out.println("야구선수 이대호입니다.");
}
}
public class Static_ex {
public static void main(String[] args) {
Player.print();
Player player = new Player();
player.print2();
}
}
- 정적 메서드는 클래스가 메모리에 올라갈 때 정적 메서드가 자동적으로 생성
- 정적 메서드는 인스턴스를 생성하지 않아도 호출 가능
- 정적 메서드는 공통적으로 사용 가능한(유틸리티) 함수를 만드는데 유용