가자미의 개발이야기

자바의 스태틱이란 뭘까? 본문

Java/자바 기본 문법

자바의 스태틱이란 뭘까?

가자미 2021. 1. 5. 18:12

a. 클래스 변수(스태틱 변수)

모든 클래스에서 공유하기 위해 클래스에 속하지 않는 독립적인 변수라고 생각하면 편한다.

하지마 자바로 코딩할 때 그런 독립적인 변수도 클래스 안에 써줘야 하니, 이를 구분하기 위해 앞에 static이라고 붙이는 것이다.

 

즉 static 변수는 자신이 몸담고 있는 클래스와 관련 없는 독립적인 존재이다.

하지만 한가지 지켜줘야 하는 것이 있는데, 자신이 몸담고 있는 클래스가 지정한 접근 수준의 접근을 허용한다는 점이다.

인스턴스의 이름으로 외부에서 접근 가능한 경우도 생기게 된다.

따라서 static변수에 접근할 때는 인스턴스의 이름으로 접근하기보다 클래스의 이름으로 접근해주는게 좋다.(인스턴스와 구분하기 위해)

 

b. 스태틱 메소드

전체적인 특징은 앞서 설명한 클래스 변수와 동일하다.

하지만 클래스 메소드를 정의하는 경우를 좀 짚어야 한다.

대개 스태틱 메소드는 단순 기능(덧셈, 뺄셈..등) 혹은 인스턴스 변수와 관련지을 이유가 없는 메소드는 static선언해주는 것이 옳다.

c. 스태틱 블록

스태틱 초기화 블록이란 스태틱 변수가 메모리공간에 할당될 때만 실행되는 블록이다.

고정된 값을 변수에 할당하는 것이 아닌 특수한 상황의 값을 넣고 싶을 때 활용한다.(해당 시간이라던지 등)

class Hello{
	static {
    	int i =36;
    }
}

이런 블록을 스태틱 변수가 선언 된 곳에 같이 넣어주면 된다.

d. 스태틱은 어떨 때 사용하는가?

  1. 클래스를 설계할 때, 멤버변수 중 모든 인스턴스에서 공통으로 사용하는 변수는 static
  2. 스태틱 변수(클래스 변수)는 인스턴스 없이도 사용 가능하다.
  3. 스태틱 메소드(클래스 메서드)는 인스턴스 변수를 사용할 수 없다.
  4. 메서드 내에서 인스턴스 변수를 사용하지 않는다면 static을 고려하자.