자바 Static이란?

박재민·2021년 7월 3일
0
post-custom-banner

  1. Static이란?
  • Static이란 고정된 의미
  • Static이라는 키워드를 사용하여 Static변수와 메서드를 만들수 있음
  • 정적 필드 + 정적 메서드 = 정적 멤버(클래스 멤버)
  • 정적 필드와 메서드는 객체에 소속된 멤버가 아니라 클래스에 고정된 멤버
  • 클래스를 로딩해서 메서드 메모리 영역에 적재할 때 클래스별로 관리
  • 따라서, 클래스의 로딩이 끝나는 즉시 바로 사용
  1. 정적(Static) 멤버 생성
  • Static 키워드를 통해 생성된 정적 멤버들은 Heap 영역이 아닌 Static 영역에 할당
  • Static 영역에 할당 된 메모리는 모든 객체가 공유하여 하나의 멤버를 어디서든지 참조
  • 다만, Garbage Collector의 관리 영역 밖에 존재 하기에 Static영역에 있는 멤버들은 프로그램 종료시 까지 메모리가 할당된 채로 존재 => Static을 많이 사용하면 시스템 성능이 떨어짐
  1. 정적(Static) 멤버 선언
  • 필드와 메서드를 생성 시 인스턴스 VS 정적으로 생성할 것인지 판단 기준은 공용으로 사용 여부로 나뉨
  • 그냥 생성 한다면 자동으로 인스턴스로 생성되며, 정적으로 생성하려면 필드와 메서드 선언 시 Static이라는 키워드를 추가하면 됨
  1. 정적 메서드 사용 예시
class Player{
    static void print() { //클래스 메소드
	System.out.println("야구선수 이승엽입니다.");
    }

    void print2() { //인스턴스 메소드
	System.out.println("야구선수 이대호입니다.");
    }
}

public class Static_ex {
	
    public static void main(String[] args) {
        Player.print(); //인스턴스를 생성하지 않아도 호출이 가능
    	
        Player player = new Player(); //인스턴스 생성
        player.print2(); //인스턴스를 생성하여야만 호출이 가능
    }
}
  • 정적 메서드는 클래스가 메모리에 올라갈 때 정적 메서드가 자동적으로 생성
  • 정적 메서드는 인스턴스를 생성하지 않아도 호출 가능
  • 정적 메서드는 공통적으로 사용 가능한(유틸리티) 함수를 만드는데 유용
profile
동료를 소중히 생각하는 개발자입니다.
post-custom-banner

0개의 댓글