티스토리 뷰

static변수란 ? 변수가 선언된 클래스의 모든 인스턴스를 공유하는 변수이다.


즉, 인스턴스 변수가 인스턴스 별로 각각 존재한다면


static을 사용하여 딱 하나만 존재해서 모든 인스턴스를 공유하는 형태의 변수이다.




static 변수와 메소드를 사용하는 클래스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class B {
    // 정적변수는 B클래스의 소속이 아니다. 단지 위치만 B클래스 안에 속해있고 프로그램 소속이다.
    public static int s_num = 0; // static 변수(정적)... 프로그램이 시작될 때 딱 한번만 만들어짐
    public int m_num = 0; // 인스턴스 변수(멤버변수) .. 객체가 만들어 질 때 마다 만들어 진다.
 
    public B() {
        s_num++;
        this.m_num++;
 
        System.out.println("s_num : " + s_num);
        System.out.println("m_num : " + this.m_num);
    }
 
    // static 메소드는 프로그램 시작할 때 이미 사용 가능한 상태이다.
    // static 메소드에서는 일반 멤버 변수를 사용할 수 없다.
    public static void s_showInfo() {
        System.out.println("s_num : " + s_num);
        // System.out.println("m_num : " + this.m_num); // Error!
        // m_num은 객체가 만들어져야하기 때문에 Error
    }
 
    // 일반 멤버 메소드는 객체가 만들어져야만 사용할 수 있다.
    public void m_showInfo() {
        System.out.println("s_num : " + s_num);
        System.out.println("m_num : " + this.m_num); // no Error!
    }
}


B클래스를 사용하는 메인 클래스


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class ExampleStatic{
    public static void main(String[] args) {
        // B.s_num+=1;
        // System.out.println(B.s_num);
        B b1 = new B();
        B b2 = new B();
        B b3 = new B();
        B b4 = new B();
        B b5 = new B();
 
        // 외부에서 static 변수를 활용하기
        // 단, static 변수가 public으로 되어 있어야함
        // static 변수도 접근지시제어자의 영향을 받는다.
 
        // 클래스명 .static 변수명
 
        System.out.println("B.s_num : " + B.s_num);
        System.out.println("b1.s_num : " + b1.s_num); // 사용 하지 말 것
                                                        // 멤버 변수인지 static 변수인지
                                                        // 헷갈린다.
    }
}


반응형
LIST
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함