자바에서는 클래스변수, 인스턴스변수, 지역변수 요로코롬 3가지의 종류가 있습니다.

그 중 클래스변수 인스턴스변수를 합쳐서 멤버변수 라고 부릅니다.

이 3가지의 변수를 파악하기 위해서는 변수가 어느위치에 있는지 확인해야 합니다.


먼저 인스턴스변수 부터 알아봅시다~

인스턴스 변수는 class내부에 위치합니다.

또한 객체를 생성해야만 사용 할 수 있습니다.


참고로 우리가 객체를 생성할때 new라는 키워드를 사용한 것 기억하시나요^^?


때문에 인스턴스변수의 값을 사용하기 위해서는 인스턴스화를 하여야 합니다.

역시 눈으로 보고 직접 코딩을 해보시는게 더 기억에 남겠네요.




각 객체마다 고유한 값을 유지해야 하는 경우 사용할때 필요하겠네요.


그 다음 클래스 변수 입니다. 

인스턴스 변수와 마찬가지로 class내부에 위치합니다.

그리고 인스턴수 변수 앞에 static을 붙여주면 이게 바로 클래스 변수 입니다.

인스턴스 변수는 각 인스턴스 마다 독립적인 저장공간을 갖습니다. 하지만 클래스 변수는 모든 인스턴스가 같은 저장공간을 공유합니다.

그리고 전역 변수 라고 부르기도 합니다.

지금은 그냥 static을 붙인다는 것만 알아두시면 충분합니다^^


지역변수는 멤버 변수를 제외한 나머지 변수들을 의미합니다.

즉 class영역이 아닌 다른 블럭( { } )에 존재하면 지역변수 입니다.

지역 변수가 선언된 블록을 벗어나면 그 지역 변수는 사라집니다.




위의 소스에서 세가지의 변수를 이용해서 코딩을 해봤습니다.

21번째 라인에서는 어떤 값이 출력이 될까요? 100? 10?

직접 실행해 보시죠!! ㅎ




100이 나오셨나요?


저는 이 소스를 보고 

1. 클래스 변수와 지역변수는 변수이름이 같아도 된다는 것을 알려주고 싶었습니다.

2. 같은 변수의 이름인 x를 출력할 때 같은 구역에 지역변수가 있다면 지역변수가 출력됨을 알려주고 싶었습니다.

3. 클래스 변수에 접근시 항상 클래스이름.클래스변수 형식으로 사용하기를 부탁합니다.


그런데 세 종류의 변수가 메모리에 올라오는 시기가 다릅니다.

클래스 변수는 클래스가 메모리에 올라올때 생성됩니다.

인스턴스 변수는 객체가 생성 될 때(new를 사용해 메모리를 할당 할 때) 생성됩니다.

지역 변수는 변수 선언문이 수행 될 때 생성됩니다.