java

자바 static 정적변수 클래스 메서드 사용하는 방법

성꼼꾸똑 2021. 5. 17. 03:45

 

static 변수란 클래스 전반에서 공통으로 사용할 수 있도록 하는 기준 변수로서 위의 코드와 같이 학생의 번호를 중복되지 않도록 구현해야 할때 사용이 됩니다.
보통 기준 변수의 값을 증가시킨뒤 각 인스턴스의 변수에 대입을 해주는 방식으로 사용하며 이러한 기준 변수는 다른 용어로 '정적변수'라고 표현합니다.


자바에서 static 변수를 사용하기 위해서는 static(예약어) 자료형(int, long, String ...) 변수이름 ;의 형식에 맞추어 선언을 하게 됩니다.
static 변수의 경우 인스턴스 마다 생성되는 변수가 아니다 보니 프로그램이 실행되었을때 메모리에 올라가 공간을 할당 받게됩니다.

 


위의 예제에서는 공통되는 메모리 주소값을 참고한다는 것을 보여주기 위해 예시를 보여드렸습니다.
이제 학생의 인스턴스가 새롭게 생성될때 자동으로 학번을 할당 하는 프로그램을 만들어 보겠습니다.


위의 내용을 살펴보면 디폴트 생성자를 통해 클래스를 생성시 seriaNum의 값을 증가시킨뒤 studentID의 값에 대입을 하게 된것입니다. 여기서 처음 접하시는 분의 경우 굳이  studentID = seriaNum;를 해주어야 하는 이유는 무엇인가? 깊은 고민이 있으실 것 입니다.


앞서 말씀드린 것 처럼 seriaNum의 변수는 static 변수로서 모두가 공유를 하는 자원이기 때문에 인스턴스의 값을 할당하지 않으면 모든 학생이 같은 학번을 갖게되는 결과를 만들게 됩니다.
사소한 부분이지만 꼭 알고 가시는 것이 중요합니다. 

이와 동일하게 클래스메서드 정적메서드 static메서드라 불리우는 함수가 있으며 이러한 함수의 내용도 변수와 거의 동일하게 이루어져있습니다.

위의 클래스 메서드를 호출시 두가지 방법을 사용하여 호출을 하였는데요.

인스턴스 객체에서 참조하는 방식과 클래스를 참조하는 방식 두가지가 있습니다.

하지만 static 변수와 static 메서드는 모두 class의 변수, 함수로 불리우기 때문에 class를 직접 참조하면 노란색의 보기 불편한 부분을 제거 할 수 있습니다.