JAVA / static 메서드

아몬드봉봉·2023년 12월 12일
0

Java

목록 보기
10/17

static 메서드

  • static 메서드는 객체의 생성 없이 호출이 가능
  • 객체에서는 호출이 가능하지만 지양한다.
  • 일반적으로 유틸리티 관련 함수는 static 메서드로 구현하는 것이 적합
  • 대표적인 Util Class는 java.util.Math가 있다.

static 메서드(Class Mathod)에서는 인스턴스 변수를 사용할 수 없다.

  • static 메서드는 인스턴스 생성과 무관하게 클래스 이름으로 호출 될 수 있음
  • 인스턴스 생성 전에 호출 될 수 있으므로 static 메서드 내부에서는 인스턴스 변수의 사용을 허용하지 않음
  • 인스턴스 변수 · 메서드에선 static이 붙은 멤버들을 사용하는 것은 가능하다.

변수의 유효 범위와 메모리

  • 변수의 유효 범위(scope)와 생성과 소멸(life cycle)은 각 변수의 종류마다 다름
  • 지역변수, 멤버 변수, 클래스 변수는 유효 범위와 life cycle, 사용하는 메모리도 다름
변수 유형 선언 위치 사용 범위 메모리 생성과 소멸
지역 변수
(로컬 변수)
함수 내부에 선언 함수 내부에서만 사용 스택 함수가 호출될 때 생성되고 함수가 끝나면 소멸함
멤버 변수
(인스턴스 변수)
클래스 멤버 변수로 선언 클래스 내부에서 사용하고 private이 아니면 참조 변수로 다른 클래스에서 사용 가능 인스턴스가 생성될 때 힙에 생성되고, Garbage Collector가 메모리를 수거할 때 소멸 됨
static 변수
(클래스 변수)
static 예약어를 사용하여 클래스 내부에 선언 클래스 내부에서 사용하고 private이 아니면 클래스 이름으로 다른 클래스에서 사용 가능 데이터
영역
프로그램이 처음 시작할 때 상수와 함께 데이터 영역에 생성되고 프로그램이 끝나고 메모리를 해제할 때 소멸 됨
  • static 변수는 프로그램이 메모리에 있는 동안 계속 그 영역을 차지하므로 너무 큰 메모리를 할당하는 것은 좋지 않음
  • 클래스 내부의 여러 메서드에서 사용하는 변수는 멤버 변수로 선언하는 것이 좋음
  • 멤버 변수가 너무 많으면 인스턴스 생성 시 쓸대없는 메모리가 할당됨
  • 상황에 적절하게 변수를 사용해야 함

출처

https://mangkyu.tistory.com/47
https://dev-coco.tistory.com/23

profile
성장을 즐기는 백엔드 자바 개발자

0개의 댓글

관련 채용 정보