static
- 고정된 이란 의미. 정적 멤버는 클래스에 고정된 멤버로, 객체를 생성하지 않고 사용할 수 있음.
- 정적 멤버는 객체에 소속된 멤버가 아니라 클래스에 소속된 멤버이기 때문에 클래스 멤버라고도 함.
- 객체마다 가지고 있을 필요성이 없는 공용 데이터라면 정적 필드로 선언하는 것이 좋음.
- 메소드의 경우 인스턴스 필드를 이용하지 않는다면 정적 메소드로 선언함.
// 스피커 클래스
public Calculator{
String color; //인스턴스 필드 - 객체마다 색이 다름
static double pi = 3.14156; //정적 필드 - 객체마다 값이 같으므로 공용 데이터
void setColor(String color) {this.color = color;} //인스턴스 메소드 - 인스턴스 필드 사용o
static int plus(int x, int y) {return x + y;} //정적 메소드 - 인스턴스 필드 사용x
}
- 객체를 생성하지 않아도 메소드 호출 가능
- static 메소드는 클래스 변수만 사용 가능
- 클래스 변수는 모든 객체에서 하나의 값을 바라보기 때문에 사용에 주의해야함
static 블록
- 어떤 클래스의 객체가 생성되면서 딱 한 번만 불려야 함.
- 객체는 여러 개를 생성하지만 한 번만 호출되어야 함
- 객체가 생성되기 전에 클래스에 대한 참조가 발생하자마자 한 번만 호출되고, 그 후엔 호출할 수 없음.
- 클래스 내에, 메소드 밖에 선언되어야 함.
- 여러 개 선언 가능
- 클래스를 초기화할 때 꼭 수행되어야 하는 작업이 있을 경우 유용하게 사용됨
- static 블록 안에는 static한 것들만 호출할 수 있음
- 생성자가 불리지 않더라도, 클래스에 대한 참조가 발생하자마자 호출됨.
'Languages > Java' 카테고리의 다른 글
[Java] 패키지, 접근제어자 (0) | 2023.08.19 |
---|---|
[Java] 매개 변수 지정 (0) | 2023.08.19 |
[Java] 배열 (0) | 2023.08.11 |
[Java] 변수, 자료형 (0) | 2023.08.11 |
[Java] 자바 기초 (0) | 2023.08.11 |