본문 바로가기

Languages/Java

[Java] Static과 Static 블록

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