[JAVA] static 키워드

hyelim·2023년 4월 28일
0

JAVA

목록 보기
2/13
post-thumbnail

Java에서 Static 키워드를 사용한다는 것은 메모리에 한번 할당되어 프로그램이 종료될 때 해제되는 것을 의미한다

이를 정확하게 이해하기 위해서는 자바의 메모리 영역에 대한 이해가 필요하다

자바의 메모리 영역은 면접에서도 종종 출제되기 때문에 따로 포스팅 했다 이시리즈의 글을 참고 바란다

우리가 만든 Class는 Static 영역에 생성되고, new 연산을 통해 생성한 객체는 Heap영역에 생성된다

객체의 생성시에 할당된 Heap영역의 메모리는 Garbage Collector를 통해 수시로 관리를 받는다

하지만 Static 키워드를 통해 Static 영역에 할당된 메모리는 모든 객체가 공유하는 메모리라는 장점을 지니지만,

Garbage Collector의 관리 영역 밖에 존재하므로 Static을 자주 사용하면 프로그램의 종료시까지 메모리가 할당된 채로 존재하므로 자주 사용하게 되면 시스템의 퍼포먼스에 악영향을 주게 된다

static 변수 및 static 메소드 특징

  • 클래스가 메모리에 로드될때, 스태틱(static) 메모리 영역에 생성
  • 인스턴스를 생성하지 않고도 사용할 수 있다
  • 동일 클래스의 모든 인스턴스에서 공유하여 사용된다
  • 클래스당 하나만 생성되며, 클래스 멤버라고도 부른다
  • static 메소드 안에서는 static 멤버들만 사용할수 있고, 인스턴스 멤버는 사용할 수 없다.

Static 변수(정적변수)

public final class AppConstants{
	public static final String APP_NAME = "MyApp";
	public static final String PREF_NAME = "MyPref";
}

Static 메서드

public class Book {
	
	static int price = 1000;             // static 변수
		
	public static void showPrice() {     // static 메소드
		System.out.println("가격:" + price);
	}	
}
public class HelloWorld {
	public static void main(String[] args) {

		Book.price = 2000;      // 객체 생성없이 클래스명으로 바로 사용
		Book.showPrice();       // 객체 생성없이 클래스명으로 바로 사용
				
		Book b1 = new Book();   // 객체 생성후 사용
		b1.price = 4000;        // 인스턴스 이름으로도 사용가능하나 클래스명으로 사용을 추천함
		b1.showPrice();         // 인스턴스 이름으로도 사용가능하나 클래스명으로 사용을 추천함
	}
}

참조

https://kadosholy.tistory.com/95

profile
기록용

0개의 댓글