프로그래밍 언어/JAVA

자바 인스턴스 변수 vs 클래스 변수

원원 2017. 11. 24. 14:49

자바 인스턴스 변수 vs 클래스 변수


인스턴스 변수란 인스턴스가 생성되었을때 그 안에 있는 변슁고 클래스 변수란 인스턴스 변수와 상관없이 그냥 존재하는 변수입니다.



인스턴스 변수 : 클래스 내에 선언된 일반적인 변수 입니다.




클래스 변수(static 변수)

static으로 변수를 선언하면 어디서든 그 변수는 똑같습니다.  JVM에 클래스가 읽히는 순간부터 클래스 변수가 메모리에 저장됩니다.


mon.java

1
2
3
4
5
6
7
8
9
10
11
public class mon {
    static public void main(String args[]) {
        staticClass.n++;
        System.out.println("n의 값 : " + staticClass.n);
        staticClass.n++;
        System.out.println("n의 값 : " + staticClass.n);
        staticClass sc = new staticClass();
        sc.n++;
        System.out.println("n의 값 : " + sc.n);
    }
}
cs


staticClass.java

1
2
3
4
 
public class staticClass {
    static int n = 0;
}
cs


결과물

n의 값 : 1

n의 값 : 2

n의 값 : 3



클래스 변수의 사용

이러한 클래스 변수들은 객체끼리 변수의 공유가 필요한 경우 사용합니다.