Java의 static 멤버와 변수 타입

Dohyeon Kong·2024년 4월 4일
0

Java☕

목록 보기
6/12
post-thumbnail

static 멤버

static 지시어로 선언된 멤버

  • static 멤버는 객체의 공간에 생기지 않고 외부 별도로 존재한다.
  • 생성된 멤버는 다른 객체가 생성될때마다 공유된다.
    (그 객체의 멤버로 인식할 수 있다.)
  • static멤버는 클래스당 하나만 생성이 되는 멤버이며, 동일한 클래스의 모든 객체들이 공유하므로 클래스 멤버라고 부른다.
  • 프로그램을 시작할 때나 클래스 로딩 시 생성된다.
  • 프로그램이 종료할 때 함께 소멸된다.
    => 객체를 생성하기 전에 static멤버를 사용할 수 있고, 객체가 소멸된 후에도 사용할 수 있다.

static 멤버 사용

  • static 멤버는 객체 이름이나 클래스 이름으로 모두 활용할 수 있다.
StaticSample.m = 3; // 클래스 이름으로 static 필드 접근
StaticSample.f(); // 클래스 이름으로 static 메서드 호출

StaticSample b1 = new StaticSample();
b1.m = 3; // 객체 이름으로 static 필드 접근
b1.f(); // 객체 이름으로 static 메소드 호출

활용할 수 이유는?🤔
객체가 이미 생성되기 전에 프로그램이 실행될 때 생성되기 때문이다.

static의 활용

전역 변수와 전역 함수를 만들 때 활용

  • 모든 클래스에서 공유하는 전역 변수(global variable), 모든 클래스에서 공유하는 호출할 수 있는 전역 함수(global function)를 만들고자 할 때 사용된다.

공유 멤버를 만들고자 할 때 활용

  • static으로 선언된 필드나 메소드는 이 클래스의 객체들 사이에 공유된다.

static 메소드의 제약 조건

static 메서드는 오직 static 멤버만 접근할 수 있다.

  • 객체가 생성되지 않은 상황에서도 사용이 가능하기 때문에 객체에 속한 인스턴스 메소드나 인스턴스 변수 등을 사용할 수 없다.

static 메서드에서는 this를 사용할 수 없다.

  • 객체 없이도 존재하기 때문에 static 메서드에서 this를 사용할 수 없다.

Java의 변수 타입(종류)

  • 전역 변수 (Global Variables)
  • 지역 변수 (Local Variables)
  • 매개 변수 (Parameters)
  • 클래스 변수 (Static Variables)

전역 변수 (Global Variables)

클래스 레벨에서 선언된 변수를 의미하며 필드(field)라고도 부르는 변수

  • 클래스의 모든 인스턴스가 공유하지 않는다.
  • 객체 각각이 가지는 고유한 상태를 정의할 때 사용된다.

지역 변수(Local Variables)

메서드 내 선언되며 그 메서드 블록 내에서만 사용할 수 있는 변수

  • 선언된 블록 또는 메서드 내부로 제한된다.
  • 해당 블록이나 메서드의 실행이 끝나면 지역변수도 함께 소멸한다.

매개 변수(Parameters)

메서드가 호출될 때 외부로부터 값을 전달받기 위해 사용되는 변수

  • 매서드 선언부에 정의되며, 메서드 실행 시 전달되 인수(arguments)의 값을 받아 메서드 내 사용할 수 있다.

클래스 변수(Staic Variables)

static 키워드를 사용하여 선언되며, 해당 변수는 해당 클래스의 모든 인스턴스(객체)가 공유된다.

  • 클래스 변수는 클래스가 메모리에 로드될 때 생성되며, 프로그램이 종료될 때까지 남아있다. 그러므로 어느 한 객체가 클래스 변수를 변경한다면 해당 클래스의 모든 객체에게 영향을 준다.

참조📜

  • 명품 JAVA ESSENTIAL - 황기태 지음-
profile
천천히, 꾸준히, 그리고 끝까지

0개의 댓글