본문 바로가기

스프링

[static] 자바 static 정리

static의 경우 클래스가 메모리에 로딩되기전 이미 정적변수와 정적메소드를 위한 메모리 공간(Method Area)이 할당되므로 객체가 생성될때마다 메모리 공간이 할당되지 않는다.

첫째로, static을 쓴 변수나 메소드는 객체생성없이 모든 객체가 아무런 제약없이 공유할수 있다. 물론 객체생성하고 써도 상관없다.

둘째로, static을 쓴 변수는 값을 공유하므로 연속적으로 그 값의 흐름을 이어갈수 있다는 것이다.

JVM static으로 선언한 놈을 딱한번 메모리를 할당함.

Static 메서드에는 인스턴스 변수가 올 수 없다 당연하다. 스태틱 메서드는 인스턴스를 생성안하고도 호출할 수 있으니까

Main 메서드는 static인 이유 : 누군가 호출하기 전에 실행되어야 한다. , 메모리에 올라가 있어야 한다. JVM이 로딩되자마자 실행시키는 것은 main 메소드

 

setData안의 지역변수는 메서드가 끝나면 변수는 지워지지만 static은 유지

 

Static 초기화블럭 : 생성자로 생성을 하면 객체를 생성할 때 마다 객체가 생성되나, 초기화블럭을 사용하면 최초생성시 1회 생성되며, 그 자원은 재사용된다.

Static은 세션 등 상태를 저장, 혹은 변경하지 않는 방식으로 사용됨