Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

rudu_std

static 본문

Java

static

Ru_Du 2024. 7. 21. 15:32
  • 변수 (static 변수)
  • 접근제어자
  • 객체지향의 개념

static

static 이란

자바에서 스태틱(static) 키워드는 클래스 레벨의 변수나 메소드에 사용되며,이를 통해 객체 생성 없이 해당 변수나 메소드에 접근할 수 있다.

스태틱 멤버는 클래스가 메모리에 로드될 때 단 한 번만 생성되며 모든 인스턴스가 공유하는 공통의 자원이 된다.

스태틱 키워드의 주요 사용 사례로는 상수 선언 유틸리티 함수 구현, 싱글턴 패턴 구현 등이 있다.

이러한 특성은 메모리 관리와 성능 최적화에 기여한다.

왜냐하면 스태틱 멤버는 클래스 단위로 관리되어 메모리 사용량을 줄이고 객체 생성 *오버헤드 없이 접근할 수 있기 때문이다.

*( 오버헤드(overhead)는 어떤 처리를 하기 위해 들어가는 간접적인 처리 시간 · 메모리 등을 말한다. )


static 변수

스태틱 변수는 클래스의 모든 인스턴스가 공유하는 변수.

ex) 특정 클래스의 인스턴스 개수를 추적하거나 클래스가 공통으로 사용하는 설정 정보를 저장하는 데 사용.

스태틱 변수는 클래스가 로드될 때 생성되며 프로그램 종료 시까지 유지.

이는 전역 변수와 유사한 역할을 하지만 클래스 내부에서만 접근 가능한 범위를 가진다.

스태틱 변수는 클래스 레벨에서 관리되어 클래스의 모든 인스턴스 간에 데이터를 공유, 일관된 상태를 유지하기 위해 사용되기 때문.


static 메소드

스태틱 메소드는 객체의 생성 없이 호출할 수 있는 메소드로 유틸리티 함수나 헬퍼 함수를 구현하는 데 주로 사용된다.

ex) Math 클래스의 sqrt, random 같은 메소드 같은 경우가 static ****메소드의 예.

스태틱 메소드는 인스턴스 변수나 메소드에 접근할 수 없으며 오직 스태틱 변수나 다른 스태틱 메소드에만 접근할 수 있다.

이는 스태틱 메소드가 인스턴스에 속하지 않고 클래스에 속하기 때문.

왜냐하면 스태틱 메소드는 인스턴스의 상태에 의존하지 않고 클래스 레벨에서 공통적으로 사용되는 기능을 제공하기 위해 사용되기 때문.


static 변수

  • 클래스 변수
  • 한 클래스에서 공통적인 값을 유지해야 할 때 선언.
  • 클래스가 메모리에 로딩될 때 생성되어 프로그램이 종료될 때까지 유지.
  • 객체를 생성하지 않고도 '클래스 이름. 변수명'으로 호출이 가능
// static 변수 (클래스 변수)
public class StaticCode {
    public static final String staticString = "static 변수"
}
 
// 인스턴스 변수
public class InstanceCode {
    public int a;
    public int b;
    public String instanceString = "인스턴스 변수";
}
public void staticStr() {
    //static 변수는 인스턴스를 생성하지 않아도 사용할 수 있다.
    System.out.println("static 변수 출력 : " + StaticCode.staticString );
 
    //인스턴스 변수는 인스턴스를 생성해야 사용할 수 있다.
    InstanceCode instString = new InstanceCode();
    System.out.println("인스턴스 변수 출력 : " + InstanceCode.instanceString);
}

//결과

“static 변수 출력 : static 변수” ”인스턴스 변수 출력 : 인스턴스 변수”

'Java' 카테고리의 다른 글

JDBC  (0) 2024.08.01
람다 표현식 (Lambda Expression)  (0) 2024.07.24
클래스 형변환  (0) 2024.07.24
this  (0) 2024.07.19
접근 제한자 (public, private, protected, default)  (0) 2024.07.18