개발일지

[이것이 자바다] 정적 멤버와 static 본문

JAVA

[이것이 자바다] 정적 멤버와 static

강강강 2022. 12. 5. 11:34

대학교 2학년 때부터 거의 5-6년 자바를 사용해왔지만, 다시 자바 기본을 다지기 위해 [이것이 자바다] 라는 책을 펴본다.

 

가끔씩 이렇게 기본 개념을 다시 잡아보고 정리하면 내것이 되고 공유하면 좋을 것같아 글을 써본다!

 

이걸 아직까지 제대로 몰랐어? 할 수 있지만 이제라도 알아서 얼마나 다행인가!

 


 

static 은 "고정" 이라는 의미를 가지고 있다. 

정적 멤버는 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메소드를 말한다. 

이것들을 각각 정적 필드와 정적 메소드라고 부른다.

 

정적 멤버와 정적 메소드를 선언하는 방법은 필드와 메소드 선언 시 static 키워드를 추가적으로 붙이면 된다.

public class 클래스 이름 {
	//정적 필드
    static 타입 필드 [ = 초기값 ];
    
    //정적 메소드
    static 리턴타입 메소드이름(매개변수 선언, ... ) { ... }
    
    }

 

정적 필드와 정적 메소드는 클래스에 고정된 멤버이므로 클래스 로더가 클래스(바이트코드)를 로딩해서 메소드 메모리 영역에 적재할 때 클래스별로 관리한다. 그래서 클래스의 로딩이 끝나면 바로 사용할 수 있다!

 

그래서!!

필드를 선언할 때 인스턴스 필드로 선언할지 정적(static)으로 선언할건지 판단 기준은

객체마다 가지고 있어야 할 데이터라면 인스턴스 필드로 선언하고, 객체마다 가지고 있을 필요성이 없는 공용적인 데이터라면 정적으로 선언하는 것이 좋다.