Programming/Java

멤버 변수(필드)의 종류와 static

9rrrr-m 2024. 6. 25. 14:03

초기에 예제를 자바 언어로 프로그래밍 하면서 헷갈리는 부분인 static을 명확히 정리해보려고 합니다.

 

 


 

▶ 멤버 변수(필드)의 종류

  - 인스턴스 변수: static 이 붙지 않은 멤버 변수

  • static 이 붙지 않은 멤버 변수는 인스턴스를 생성해야 사용할 수 있고, 인스턴스에 소속되어 있다. 인스턴스 변수는 인스턴스를 만들 때 마다 새로 만들어진다.
  • 힙 영역에 생성되는 인스턴스 변수는 동적으로 생성되고, 제거된다.

  - 클래스 변수: static 이 붙은 멤버 변수

  • 클래스 변수, 정적 변수, static 변수등으로 부른다. (용어 모두 사용)
  • static 이 붙은 멤버 변수는 인스턴스와 무관하게 클래스에 바로 접근해서 사용할 수 있고, 클래스 자체에 소속되어 있다.
  • 클래스 변수는 자바 프로그램을 시작할 때 딱 1개가 만들어진다. 인스턴스와는 다르게 보통 여러곳에서 공유하는 목적으로 사용된다.
  • 프로그램 실행 시점에 딱 만들어지고, 프로그램 종료 시점에 제거된다. (가장 긴 생명주기)
  • 정적 변수는 클래스에서 공용으로 관리하기 때문에 클래스를 통해서 접근하는 것이 더 명확하다.

 

▶ 정적 메서드 사용법

  - static 메서드는 static 만 사용할 수 있다.

  • 클래스 내부의 기능을 사용할 때, 정적 메서드는 static 이 붙은 정적 메서드나 정적 변수만 사용할 수 있다.
  • 클래스 내부의 기능을 사용할 때, 정적 메서드는 인스턴스 변수나, 인스턴스 메서드를 사용할 수 없다.
    정적 메서드가 인스턴스의 기능을 사용할 수 없는 이유: 정적 메서드는 클래스의 이름을 통해 바로 호출할 수 있기때문에 인스턴스처럼 참조값의 개념이 없다.

  - 모든 곳에서 static 을 호출할 수 있다.

  • 정적 메서드는 공용 기능이다. 따라서 접근 제어자만 허락한다면 클래스를 통해 모든 곳에서 static 을 호출할 수 있다.

 

 정적 메서드 활용

  - 유틸리티성 메서드

  • 정적 메서드는 객체 생성이 필요 없이 메서드의 호출만으로 필요한 기능을 수행할 때 주로 사용한다.
    예) 수학의 여러가지 기능을 담은 클래스
          → 인스턴스 변수 없이 입력한 값을 계산하고 반환하는 것이 대부분

 

 


출처 [인프런] 김영한의 실전 자바 - 기본편

728x90