[Java] : 정적 (Static)

dohyoungK·2024년 3월 11일
0

면접 스크립트

목록 보기
12/25
post-thumbnail

[Java] 정적 (Static)


정적 (Static)

자바에서 static은 '클래스의' 또는 '공통적인' 이란 의미를 가지며 static 키워드를 통해 정적 변수와 정적 메소드를 정의할 수 있다.

정적 변수

  • 한 클래스에서 공통적인 값을 유지해야 할 때 선언한다.
  • 클래스가 메모리에 로딩될 때 생성되어 프로그램이 종료될 때 까지 유지된다.
  • 객체 생성 없이 변수명으로 호출이 가능하다.
public class StaticTest {
    public static final String DESCRIPTION = "static 변수";
}

정적 메소드

  • 인스턴스 변수를 사용할 수 없으므로 인스턴스와 관계없는 메소드를 정적 메소드라 한다.
  • 객체 생성 없이 메소드명으로 호출이 가능하다.
public class StaticTest {
    public static long add(long a, long b) {return a + b;}
    public static long divide(long a, long b) {return a / b;}
}

Static의 장점

  • JVM의 Static 영역에 저장되어 고정된 메모리 영역을 사용하기 때문에 매번 인스턴스를 생성하며 낭비되는 메모리를 줄일 수 있다.
  • 객체를 생성하지 않고 사용가능 하기 때문에 속도가 빠르다는 것이다. 클래스가 메모리에 올라가는 시점에 생성되어 바로 사용이 가능하기에 속도면에서 이점을 가진다.

Static의 단점

  • GC의 관리를 받는 Heap 영역이 아닌 Static 영역에 프로그램 종료시까지 메모리에 할당된 채로 존재하므로 프로그램 성능에 악영향을 준다.
  • Static은 따로 객체를 생성하지 않고 Static 영역에서 데이터를 불러오므로 객체의 데이터들이 캡슐화 되어야 한다는 객체지향 프로그래밍 원칙을 위반한다.
  • Static 메서드는 Interface를 구현하는데 사용할 수 없다. Static 메서드는 코드의 재사용성을 높여주는 자바의 유용한 객체지향적 기능(Interface 등)을 사용하는 것을 방해한다.

0개의 댓글