반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
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 31
Tags
more
Archives
Today
Total
관리 메뉴

디케이

클래스변수, 지역변수와 인스턴스변수 본문

Java

클래스변수, 지역변수와 인스턴스변수

디케이형 2020. 10. 26. 09:00
반응형

멤버 변수 : 객체와 연결된 변수로, 클래스 내에 선언되어 클래스의 모든 메소드들이 접근 가능한 변수

이 멤버 변수에 종류로 클래스 변수와 인스턴스 변수가 있다.

아래 표로 구분이 가는한데 자세한 설명은 예시를 보자

 

class test { static int a = 1; // 클래스 변수 int b = 2; // 인스턴스 변수 } class Main { public static void main(String[] args) { System.out.println(test.a); // System.out.println(test.b); Error test ex1 = new test(); test ex2 = new test(); ex1.a = 2; // 클래스 변수 수정 System.out.println(ex2.a); // 2 출력 ex1.b = 3; // 인스턴수 변수 수정 System.out.println(ex2.b); // 2 출력 } }

class test {
    static int a = 1; // 클래스 변수
    int b = 2; // 인스턴스 변수
}

class Main {

    public static void main(String[] args) {
        System.out.println(test.a);
        // System.out.println(test.b); Error

        test ex1 = new test();
        test ex2 = new test();

        ex1.a = 2; // 클래스 변수 수정
        System.out.println(ex2.a); // 2 출력

        ex1.b = 3; // 인스턴수 변수 수정
        System.out.println(ex2.b); // 2 출력
    }
}

1. 클래스 변수

- 클래스 변수는 클래스 안에 있는 멤버변수로 변수 앞에 static을 붙여 사용한다. 클래스가 메모리에 올라갈 때 생성되므로 모든 객체가 해당 변수를 공유한다. 따라서 위의 예시처럼 따로 객체를 생성하지 않아도 직접 변수에 접근이 가능하다.

- 객체가 생성될 때마다 생성되는 각각의 변수가 아니라 공유하는 변수이므로 ex1 객체에서 클래스 변수를 수정하고 ex2 객체에서 이 클래스 변수를 출력하면 수정된 값이 출력된다.

2. 인스턴스 변수

- 인스턴스 변수는 인스턴스가 생성될 때 각각의 인스턴스가 가지는 변수이다. 따라서 인스턴스를 생성하지 않고 인스턴스 변수에 직접 접근하여 출력시킬 수 없다.

- ex1 객체의 인스턴스 변수를 수정하더라도 ex2 객체의 인스턴스 변수와는 별개이므로 원래 저장된 '2'가 출력된다.

3. 지역 변수

- 지역 변수는 메소드 내에서 선언되며 메소드 내에서만 사용할 수 있는 변수이다. 메소드가 실행될 때 메모리를 할당 받으며 메소드가 끝나면 소멸되어 사용할 수 없게 된다.

 

반응형

'Java' 카테고리의 다른 글

IP와 도메인  (0) 2020.10.26
표준입력 표준출력  (0) 2020.10.26
생성자 오버로딩과 this  (0) 2020.10.25
메소드 오버로딩  (0) 2020.10.25
this  (0) 2020.10.25