본문 바로가기

개발자노트

클래스) 멤버 변수와 클래스 변수의 차이 이해

package class02;

// 멤버변수 : 인스턴스(객체)변수  |    클래스변수==[공유자원]

class A {

	int num1; // 멤버변수 -> 객체마다 고유한 값 == 객체끼리 값을 공유X

// 인스턴스(객체) 변수

	static int num2; // 클래스변수-> 객체끼리 값을 공유한다는건... a객체의 변화가 b객체에게도 영향을 줌!! 확인방법: num2가 기울어짐!

	void showInfo() {

		System.out.println("num1= " + num1);

		System.out.println("num2= " + num2);

	}

	A(int num1, int num2) {

		this.num1 = num1;

		this.num2 = num2;

	}

}

public class Test05 {

	public static void main(String[] args) {

		A a1 = new A(1, 2);

		A a2 = new A(10, 20);

		a1.num1 += 100;

		a1.num2 = 2;

		a1.showInfo();

		a2.showInfo();

	}

}

 

쉽게 클래스 변수는 공유자원이다.

내가 만든 클래스공간, 메인공간 상관 없이 계속해서 공유한다. 

static의 뜻은 객체와 무관하게라는 뜻이기 때문에 클래스 변수를 선언 할 때 사용하면 된다.

출력값

num1= 101

num2= 2

num1= 10

num2= 2