Static이란
- Static은 (변화 움직임이 없이 )‘고정된’이라는 의미를 가지고 있다
- 정적 멤버는 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메소드를 말한다.
- 정적 멤버는 객체에 소속된 멤버가 아니라 클래스에 소속된 멤버이기 때문에 클래스 멤버라고도 한다.
멤버란?
- OOP 에서 하나의 클래스를 구성하는 개별적인 구성 요소를 말한다
- 변수, 메소드
✨정적 멤버와 인스턴스 맴버의 차이
- 쉽게 생각하면 클래스는 일종에 설계도인데 그 설계도를 바탕으로 만든 것이 인스턴스다
- 즉, 인스턴스와 클래스는 다르다
- 인스턴스도 멤버를 가지고 클래스도 멤버를 가진다
- 한 클래스를 바탕으로 만든 인스턴스는 모두 동일한 클래스의 멤버를 가진다.
언제 사용?
정적필드
- 객체마다 가지고 있어야 할 데이터라면 인스턴스 필드로 선언 객체마다 필요한 데이터라면 정적 필드로
메소드
선언법
public class Calculator{
static in plus(int x, int y){...}
}
int restult = Calculator.plus(10,20);
정적 메소드는 객체가 없어도 실행되기 때문에 인스턴스 필드, 메소드를 사용할 수 없다
사용하려면 객체를 선언하고 접근해야 된다 main() 메소드도 정적 메소드기 때문에 동일한 규칙이다
Static 메모리
- Runtime Data Area 에 Method Area에 멤버 값들이 할당
- 한번 선언되면 프로그램의 시작하는 동안에는 메모리내에 존재하기 때문에 계속쌓임