Back-End

자바에서 전역변수와 멤버변수의 차이점

hoya7788 2024. 7. 29. 09:47
전역 변수 (Global Variable)

자바에서는 엄밀히 말해 "전역 변수"라는 개념이 없습니다. 이는 주로 전역 변수 개념이 C나 다른 언어에서 온 것이기 때문입니다. 자바에서는 전역 변수와 유사한 개념으로는 클래스 변수(static 변수)가 있습니다.

클래스 변수 (Class Variable)

  • 정의: 클래스 변수는 클래스에 하나만 존재하며, 해당 클래스로 생성된 모든 객체가 공유합니다.
  • 선언: static 키워드를 사용하여 선언합니다.
  • 사용: 클래스명.변수명으로 접근합니다.
  • 수명: 클래스가 메모리에 로드될 때 생성되어 프로그램이 종료될 때까지 존재합니다.
  • 예시:
     

 

멤버 변수 (Member Variable)

멤버 변수는 클래스의 인스턴스 변수로, 객체마다 별도로 존재하는 변수입니다.

인스턴스 변수 (Instance Variable)

  • 정의: 인스턴스 변수는 클래스의 각 인스턴스마다 개별적으로 존재합니다.
  • 선언: 클래스 블록 내에서 선언되며, static 키워드 없이 선언합니다.
  • 사용: 객체를 생성한 후, 객체명.변수명으로 접근합니다.
  • 수명: 객체가 생성될 때 생성되어 객체가 더 이상 참조되지 않을 때 가비지 컬렉션에 의해 회수됩니다.
  • 예시: 
     

차이점 요약

  1. 소속: 클래스 변수는 클래스에 소속되어 있고, 멤버 변수는 객체에 소속되어 있습니다.
  2. 수명: 클래스 변수는 클래스가 로드될 때부터 프로그램이 종료될 때까지 존재하고, 멤버 변수는 객체가 생성될 때부터 해당 객체가 파괴될 때까지 존재합니다.
  3. 공유: 클래스 변수는 해당 클래스로 생성된 모든 객체가 공유하지만, 멤버 변수는 각 객체마다 별도로 존재합니다.
  4. 접근 방법: 클래스 변수는 클래스명으로 접근하고, 멤버 변수는 객체명으로 접근합니다.