☕Java 정적(Static) 변수,메소드

hamsang·2022년 5월 22일
0

Java

목록 보기
9/36
post-thumbnail

☕ Static이란?

= 정적인, 움직이지 않는
즉, 메모리에 고정적으로 할당되어 프로그램이 종료될 때 해제되는 변수나 함수에 쓰는 키워드이다.


📌 static 사용의 장점

  1. 고정 메모리이므로 효율적으로 메모리를 사용할 수 있다.
  2. 객체를 생성하지 않고 사용하기 때문에 속도가 빠르다.
  3. 공유자원

📌 static 사용의 단점

  • 무분별한 static 사용은 메모리 낭비를 불러올 수 있다.
    (method 영역은 GC가 작동하지 않기 때문에 사용하지 않아도 프로그램 종료까지 메모리를 차지함)
  • 오류발생 시 디버깅이 어려움
    (코드의 여러 부분에서 영향을 받기 때문에 변화추적이 어렵다. -> 캡슐화를 위배해 객체지향적이지 않음)
  • static 메소드에서는 only static 변수만 사용가능
  • 상속불가능 -> 확장에 어려움

☕ static 변수

static 변수는 클래스 내부에 선언해 프로그램이 실행되어 메모리에 올라갔을 때 딱 한 번 메모리 공간이 할당된다. 그리고 그 값은 모든 인스턴스(객체)가 공유한다. 다른 멤버 변수처럼 인스턴스가 생성될 때마다 새로 생성되지 않는다. 이런 이유 때문에 static 변수를 클래스에 기반한 변수라고 해서 '클래스 변수(class variable)' 라고도 한다.

📌 static 변수의 특징

  • 클래스가 사용되기 전, 미리 static을 메모리에 올린다.
  • 객체 생성없이 바로 사용가능 -> 즉, 객체 생성과 무관하다. (static 변수는 객체보다 먼저 생성된다.)
  • 공유변수나 공유메소드로 사용가능 -> 메모리 사용 최소화
  • static 메소드 내에서는 일반 변수를 사용할 수 없다. (일반 변수는 늦게 메모리에 올라가기 때문)

☕ static 메서드

객체 생성 없이 "클래스.메서드()" 형태로 호출 하는 방식. 인스턴스 멤버와 관련 없는 작업을 하는 메서드이다. 메서드 내에서 인스턴스 변수(멤버 변수)를 사용할 수 없다. (static 변수만 사용 가능)

profile
햄생

0개의 댓글

관련 채용 정보