[java] static

ideal dev·2023년 3월 10일
0

Java

목록 보기
7/7

오늘은 static 에 대해 공부해보았다.

Static 정적 멤버 선언

1. static 멤버변수

  • 변수를 static 으로 정의하여 사용
    • 클래스 변수는 클래스에 속하며, 클래스의 모든 인스턴스가 공유 가능
public class MyClass {
    static int staticTestNum;
}

2. Static 메서드

  • 메서드를 static으로 선언하여 정의
    • static 메서드는 클래스의 인스턴스를 생성하지 않고도 호출 가능
public static void test_method(){}

Static 특징

  • 클래스 레벨에서 정의됨
    ~> 해당 클래스의 인스턴스와 무관하게 사용 가능

  • 모든 인스턴스에서 공유되는 값

  • 인스턴스 생성과 무관하게 하나의 메모리 공간에서 유지

  • 클래스 레벨에서 사용할 수 있어야 하므로, 인스턴스를 생성하지 않아도 사용할 수 있어야 함 !

Static 의 이점

  • 프로그램 실행 시 이미 메모리에 전제하기 때문에 호출 속도가 빠름
  • static 메서드는 인스턴스를 생성하지 않기 때문에 메모리 사용량을 줄일 수 있음
  • 여러 인스턴스가 공유 가능

Static 의 단점

  • 클래스의 인스턴스와 별도로 존재하기 때문에, 이를 잘못 사용하면 프로그램의 설계가 어려워짐
  • 다중 스레드 환경에서 동시에 접근될 수 있기 때문에 이를 제어하지 않으면 문제 발생

컴파일 과정

  • 클래스가 로드될 때 초기화
  • static 메서드
    • 호출하려면 클래스 이름을 사용하여 직접 호출해야 합니다.
    • 이 때 클래스 파일의 메서드 영역에 적재
  • static 멤버 변수
    • 클래스 파일의 데이터 영역에 적재

0개의 댓글