# 클래스 변수 vs 인스턴스 변수
클래스 변수란, static 키워드가 필드에 적용된 것을 말합니다. 이와 반면, non-static 필드(static이 없는 일반적인 필드)는 인스턴스 변수라 합니다.
```
class Student {
// 클래스 변수(static 필드)
static int count = 0;
// 인스턴스 변수(non-static 필드)
int stdNum;
String name;
}
```
인스턴스 변수는 각 객체 내부에 존재하지만, 클래스 변수는 객체 밖, 클래스 영역에 존재합니다.
![클라우드스터딩-자바-클래스-변수-vs-인스턴스-변수](https://i.imgur.com/RwvZzxL.png)
클래스 변수의 사용은, 아래와 같이 클래스 이름을 통해 접근 가능합니다.
```
System.out.printf("총 학생 수: ");
System.out.printf("%d\n", Student.count);
```
## 문제
샘숭전자의 갤럭시 스마트폰은 고유의 시리얼 넘버를 가지고 있다. 이 시리얼 넘버는 임의의 알파벳과 생성 순서를 번호로 가진다.
```
// 시리얼 넘버 예
Galaxy { serialNum: I-1 } // 1번째 객체
Galaxy { serialNum: V-2 } // 2번째 객체
Galaxy { serialNum: U-3 } // 3번째 객체
```
그런데 주어진 코드의 시리얼 넘버에는 문제가 있다. 생성 순서에 따른 번호가 아닌 모두 1을 출력하고 있다.
```
Galaxy { serialNum: I-1 }
Galaxy { serialNum: V-1 }
Galaxy { serialNum: U-1 }
Galaxy { serialNum: P-1 }
Galaxy { serialNum: S-1 }
=========================
Galaxy 객체의 개수: ?
```
주어진 코드에 클래스 변수를 적용하여, 출력 예와 같은 결과를 얻으시오.
## 출력 예
```
Galaxy { serialNum: I-1 }
Galaxy { serialNum: V-2 }
Galaxy { serialNum: U-3 }
Galaxy { serialNum: P-4 }
Galaxy { serialNum: S-5 }
=========================
Galaxy 객체의 개수: 5
```