static이란 ?

장찬익·2023년 9월 11일

JAVA 학습 일지

목록 보기
11/28

- static(정적)의 개념

  • 정적(static)은 고정된이란 의미를 가지고 있습니다. Static이라는 키워드를 사용하여 Static변수와 Static메소드를 만들 수 있는데 다른말로 정적필드와 정적 메소드라고도 하며 이 둘을 합쳐 정적 멤버라고 합니다. (클래스 멤버라고도 합니다.) 정적 필드와 정적 메소드는 객체(인스턴스)에 소속된 멤버가 아니라 클래스에 고정된 멤버입니다. 그렇기에 클래스 로더가 클래스를 로딩해서 메소드 메모리 영역에 적재할때 클래스별로 관리됩니다. 따라서 클래스의 로딩이 끝나는 즉시 바로 사용할 수 있습니다.

- 정적(Static) 멤버 생성

  • Static 키워드를 통해 생성된 정적멤버들은 Heap영역이 아닌 Static영역에 할당됩니다. Static 영역에 할당된 메모리는 모든 객체가 공유하여 하나의 멤버를 어디서든지 참조할 수 있는 장점을 가지지만 Garbage Collector의 관리 영역 밖에 존재하기에 Static영역에 있는 멤버들은 프로그램의 종료시까지 메모리가 할당된 채로 존재하게 됩니다. 그렇기에 Static을 너무 남발하게 되면 만들고자 하는 시스템 성능에 악영향을 줄 수 있습니다.
  1. Static
    클래스에서 공유되는 변수나 메서드를 정의할 때 사용된다.
    class Person{
    // 인류 평균 나이는 모든 사람이 동일하게 공유해야 하는 값
    // 객체들이 공유해야 하는 자원에는 static을 붙인다.
    static int avgAge; // 공유되는 변수
    int age;
    String name;

    public void getLife() {
        System.out.println("당신의 남은 수명은 약 " + (avgAge - age) + "살 입니다.");
    }

    }
    -> avgAge 변쉐 static 키워드를 붙이면 자바는 메모리 할당을 딱 한번만 하게 되어 메모리를 적게 사용할 수 있다.

-> static을 사용하는 또 다른 이유는 값을 공유할 수 있기 때문이다.

=======================
미완성

profile
장찬익 입니다

0개의 댓글