자바(Java)에서는 클래스를 만들고 내부에 변수를 선언한다. 변수는 접근 제어자를 이용해서 공개하거나 비공개 처리해서 내부에서만 사용할 수 있게 만들 수 있다. 그리고 또 한 가지! 정적 변수가 있다.
이번 포스팅에서는 정적변수에 대해서 알아보자.
정적 변수 Static Variable
자바에서는 정적 'static' 키워드가 있다. 그리고 이 키워드를 붙여서 사용하는 변수가 있다. 이 정적 변수는 클래스 레벨의 변수로, 해당 클래스의 모든 인스턴스가 공유하는 변수를 의미한다. 이 변수는 클래스가 로드될 때 메모리에 할당되며, 클래스의 모든 인스턴스가 해당 변수에 접근할 수 있다. 따라서 'static' 변수는 클래스 내부에서 인스턴스 변수와는 다른 특성을 가지고 있다.
정적 변수의 특징
정적 변수의 특징은 다음과 같다.
클래스 레벨의 변수
정적 'static' 변수는 클래스 자체와 관련되어 있다.
클래스의 모든 인스턴스가 동일한 변수의 값을 공유해서 사용한다.
메모리 할당
정적 'static' 변수는 클래스가 로드될 때 메모리에 할당된다.
따라서 객체를 생성하지 않아도 클래스 이름을 통해서 바로 접근할 수 있다.
인스턴스 생성과 무관
정적 'static' 변수는 클래스와 관련되어 있다.
인스턴스를 생성하지 않아도 접근이 가능하다.
이는 클래스 이름을 통해 접근하므로 인스턴스가 생성되지 않아도 클래스가 로드되어 있어야 한다.
메모리 생명 주기
정적 'static' 변수는 프로그램이 실행되는 동안 메모리에 유지된다.
클래스가 언로드 되거나 프로그램이 종료될 때까지 유지된다.
공유 데이터 저장
여러 인스턴스 간에 데이털르 공유해야 할 때 유용하게 사용될 수 있다.
예를 들어서, 객체의 수를 세는 데 사용되거나 어떤 설정값을 저장하는 데 활용될 수 있다.
정적 변수의 사용 예
정적 'static' 변수를 선언할 때에는 변수 선언 앞에 'static' 키워드를 붙이면 된다.
public class Student {
static int sharedValue = 0; // 정적 변수 선언
// ...
}
이렇게 선언된 정적변수는 접근할 때 인스턴스를 생성하지 않고 접근이 가능하다. 물론 인스턴스를 생성해서도 접근이 가능하다.
int value1 = Student.sharedValue; // 클래스를 통한 접근
Student student = new Student();
int value2 = student.sharedValue; // 인스턴스를 통한 접근
이번 포스팅에서는 정적 'static' 변수에 대해서 알아보았다. 정적 변수를 사용할 때 주의해야 할 점은 공유 데이터를 다루는 만큼 스레드 안전성에 관련된 고려가 필요할 수 있다는 점이다. 여러 스레드가 동시에 정적 변수에 접근하고 수정할 경우 동기화를 고려해야 한다.
'쿤즈 Dev > Java' 카테고리의 다른 글
[Java] 멤버 변수 접근 메서드 Getter, Setter (0) | 2023.09.08 |
---|---|
[Java] 캡슐화 (Encapsulation)란 무엇일까 (0) | 2023.09.07 |
[Java] 문자열을 다루는 클래스 (String, StringBuffer, StringBuilder) (0) | 2023.09.05 |
[Java] 반복문 foreach 사용 방법 (0) | 2023.09.04 |
[Java] Java14에서 추가된 switch 문법: JEP 361 (0) | 2023.09.03 |
댓글