static - static 변수(class 변수), static 변수의 초기화 시점, static 변수의 접근방법

CODEDRAGON Development/Java

반응형

   

   

static

   

   

   

static변수(class 변수)

  • 인스턴스의 생성과 상관없이 초기화되는 변수
  • 하나만 선언되는 변수
  • static으로 선언되면 누구나 어디서든 접근 가능
  • static변수 = class변수(인스턴스와 관계없이 클래스와 관계가 깊기 때문에)

   

   

   

   

static변수의 초기화 시점

  • 인스턴스의 생성과 상관없이 초기화되는 변수
  • JVM은 실행과정에서 필요한 클래스의 정보를 메모리에 로딩(Loading)하는데
  • 바로 이 로딩 시점에서 static 변수가 초기화됩니다.

   

public class StaticCount {

   

static int count = 10; // static 변수

   

public StaticCount() {

count++;

}

}

//클래스 정의

public class StaticEx01 {

   

public static void main(String[] args) {

StaticCount sc1= new StaticCount();

StaticCount.count+=3;

System.out.println(StaticCount.count);

}

1)main함수 호출

2)StaticCount인스턴스 생성시 StaticCount클래스를 정보를 JVM에 읽어 들이며

3)이때 static이라고 선언된 것은 메모리영역에 할당하고 초기화하게 됩니다.

4)그후 해당 클래스의 인스턴스 생성

   

   

   

static 변수의 접근방법

  • 두가지 형태로 접근이 가능하며 어떠한 형태로 접근을 하든 접근의 내용에는 차이가 없습니다. 다만 접근하는 위치에 따라서 접근의 형태가 달라질 수 있습니다
  • static변수에 대한 접근은 클래스 이름을 이용한 접근방법을 권장합니다. (인스턴스 이름을 통해 접근할 경우 인스턴스변수에 대한 접근인지 static변수에 대한 접근인지 구분하기 힘들기 때문입니다.)

인스턴스 이름을 이용한 접근방법

StaticCount sc1= new StaticCount();

sc1.count++;

클래스 이름을 이용한 접근방법(권장)

StaticCount.count+=3;

   

public class StaticCount {

   

static int count = 10; // static 변수

   

public StaticCount() {

count++;

}

}

public class StaticEx01 {

   

public static void main(String[] args) {

StaticCount sc1 = new StaticCount();

sc1.count++;

StaticCount.count += 3;

System.out.println(StaticCount.count);

}

}