JAVA - static변수

static변수

인스턴스 변수의 선언 앞에

static 선언이 오면 한클래스의 모든

인스턴스가 static 변수를 공유한다.


빠른 이해를 위해 소스로 확인해보자


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Inst
{
    static int instNum = 0;
    public Inst()
    {
        instNum++;
        System.out.println("인스턴스 생성 : " + instNum);
    }
}
 
class ClassVar
{
    public static void main(String[] args)
    {
        Inst inst1 = new Inst();
        Inst inst2 = new Inst();
        Inst inst3 = new Inst();
    }
}
cs


위 프로그램을 실행하면

결과값은


인스턴스 생성 : 1

인스턴스 생성 : 2

인스턴스 생성 : 3


출력된다.

이것은 static 으로 선언된 변수는

변수가 선언된 클래스의 모든 인스턴스가

공유하는 변수 라는 사실을 알려준다.


즉 인스턴스 변수가 인스턴스 별로

각각 존재하는 변수라면

static 변수는 딱 하나만 존재해서

모든 인스턴스가 공유하는 형태의 

변수라는 것이다


위예제 에서는 static 변수가 선언된

클래스 내부에서만 변수의 접근이 이뤄지고

있지만 static 변수는 클래스 

내부에서 뿐만 아니라 외부에서도

접근이 가능하다. 물론 이를 위해서는

static 변수가 public으로 선언되어야 한다.


따라서 좀더 명확하게 정의를 해보자면


"static 으로 선언된 변수는 메모리 공간에 하나만

존재하며 어디서나 접근이 가능한 변수이지만

접근이 가능하려면 static 변수도 public으로

선언되어야 한다"


'JAVA' 카테고리의 다른 글

JAVA - 예외처리  (0) 2018.02.05
JAVA - 문자열 토큰(Token)  (0) 2018.02.01
JAVA - 오버라이딩  (0) 2018.02.01
JAVA - 메소드 오버로딩  (0) 2018.02.01
JAVA - 접근제어 지시자  (0) 2018.01.31

댓글

Designed by JB FACTORY