💡 'static' 키워드를 사용하는 이유
💡 멤버변수는 모든 객체가 독립적으로 갖는 고유 데이터이기 때문에,
멤버변수의 데이터를 모든 객체가 가지게 된다.
-> 즉, 각각의 객체가 중복된 데이터를 가지게 된다.
💡 그래서 클래스를 설계할 때, 멤버변수 중 모든 객체에서 공통적으로 사용해야 하는 값에 static을 붙인다.
💡 static이 붙은 멤버변수는 객체의 개수에 상관없이 단 하나만 생성되며,
이를 모든 객체가 공유하기 때문에 메모리를 효율적으로 사용할 수 있다.
💡 static 데이터의 생성 위치
1. static 데이터
: 메모리의 고정영역 중 데이터 영역에 생성.
-------------------------------------------------------------------------------
2. 일반 멤버변수와 객체 데이터
: 메모리의 동적영역 중 Heap 메모리 영역에 생성.
💡 멤버변수와 static멤버변수의 차이
1. static 변수는 특정 클래스 안에 명시하지만,
프로그램의 실행과 객체의 생성 여부와 상관없이 이미 존재한다.
-> 따라서 그 클래스를 통해서 생성되는 객체나 그 안에 포함되있는 멤버변수와는 다른 존재이다.
2. 객체가 생성되지 않더라도 이미 존재하고 있기 때문에,
static변수는 객체의 이름을 통해 접근하는것이 아니라, 클래스의 이름을 통해서 접근해야 한다.
단, static변수가 선언된 클래스 안에서는 변수 이름으로 직접 접근이 허용된다.