1. static이란?
- static은 정적이다 또는 고정되다는 의미
- static이 붙은 것은 정적 멤버라고 칭한다
- 객체가 아닌 클래스에 고정되어 있는 멤버이다
- 클래스가 로딩이 될 때 따로 인스턴스를 생성해주지 않아도 메모리에 올라간다
- 프로그램이 종료될 때까지 메모리에 할당되어 있어서 어디서든 공유하여 참조할 수 있다 -> 그래서 static을 너무 많이 사용하면 시스템 성능 문제가 발생할 수도 있다.
- 인스턴스 생성 없이도 사용할 수 있다
*메인 메서드가 static인 이유*
public static void main(String[] args)
이렇게 메인 함수에 static이 붙는 이유도 객체 선언 없이 바로 메모리에 올려준다는 의미이다.
(바로 실행이 될 수 있도록)
2. 사용법
- 다른 객체들에 공용으로 사용하는 멤버에 붙여주면 된다.
//공용으로 사용할 변수
//변수값도 공유한다는 의미
static int n = 0;
//공용으로 사용할 메서드
public static void function(){}
3. 예시
public static void print1(){
System.out.println("static 메서드");
}
public void print2(){
System.out.println("static이 아닌 메서드");
}
public class Main {
public static void main(String[] args) {
print(); //정상적으로 호출
print2(); //에러남
}
}