본문 바로가기

개발/이론

[JAVA] static

*static *


자바 에서는 static 을 통해 클래스의 필드를 공유할 수 있도록 함

 

인스턴스 변수 

: 공유되지 않은 필드, 인스턴스마다 자신의 필드 생성, 사용

: 객체 별 관리

: 객체 생성 후 사용 가능

: 객체가 소멸될 때 자동 소멸

: 객체가 여러개-> 인스턴스 변수도 여러개

 

<-> static (정적) 변수 

: 모든 인스턴스가 공유하는 필드

: 객체 생성 전 접근, 사용 가능 

: 객체 여러개 생성-> 정적 변수는 하나


** 주의 

: 객체 자신을 가리키는 this 사용 불가능

: 인스턴스 변수, 메서드 사용 불가능

(인스턴스 멤버들은 객체 생성 후 생성이 되기 때문에 static에서 아직 생성되지 않은 멤버들을 사용할 수 없다는 개념)

 

사용

: 클래스 이름. 정적 멤버(필드or 메서드 이름)

 

final : 상수

: 상수 같은 경우 final 키워드로만 선언을 하면 객체 마다 자신의 기억 공간을 가지게 됨, 그러나 말 그대로 상수는 값이 항상 같기 때문에 하나만 있어도 되므로 보통 static과 함께 사용

: static final 자료형 변수명= 초기화 값



책. 쉽게 배우는 자바 프로그래밍