본문 바로가기
JAVA

Java Static

by 플람 2020. 3. 26.

 처음 회사를 입사했을 때 면접관님이 했던 질문 중에 static이 있는 것과 없는 것의 차이점을 말하라고 했다.

 

하지만.. 기억이 잘 나지가 않아서 대충 얼버무렸었다.

 

이제서야 Java Static에 대한 개념을 다시 한번 공부하려고 한다.

 

Class는 static 영역에 생성. new 연산을 통해 생성한 것은 Heap영역에 생성된다.

 

Heap영역의 메모리는 Garbage Collector를 통해 수시로 관리, 

 

Static 키워드를 통해 Static 영역에 할당된 메모리는 모든 객체가 공유하는 메모리의 장점을 갖지만 처음 회사를 입사했을 때 면접관님이 했던 질문 중에 static이 있는 것과 없는 것의 차이점을 말하라고 했다.

 

하지만.. 기억이 잘 나지가 않아서 대충 얼버무렸었다.

 

이제서야 Java Static에 대한 개념을 다시 한번 공부하려고 한다.

 

Class는 static 영역에 생성. new 연산을 통해 생성한 개겣는 Heap영역에 생성된다.

 

Heap영역의 메모리는 Garbage Collector를 통해 수시로 관리, 

 

Static 키워드를 통해 Static 영역에 할당된 메모리는 모든 객체가 공유하는 메모리의 장점을 갖지만 Heap영역에 들어오지 못하는 바람에 프로그램의 종료 시까지 메모리가 할당된 채로 존재한다.

 

[Static 변수 특징]

Static 변수는 클래스 변수, 객체를 생성하지 않고도 Static 자원에 접근이 가능하다.

 

말그대로 정적 변수라서 메모리에 고정으로 할당되어, 프로그램이 종료될 때 해제되는 변수이다.

(중복 값을 여러번 사용할 때 좋을듯하다.)

 

또한 Static 메서드에서는 스태틱 변수를 변수 선언 안 하고 쓸 수 있다

 

private static String na = "flamme"

public static void Name (){
     System.out.pritln(na)
}

 

이런 식으로 말이다.

 

실전에서는 상수들만 모아서 사용한다고 한다. public static final TTT = "TT";

이때 클래스도 public final class AppConstants {}

 

그리고 static 메서드 또한 해당하는 유틸 함수로 모아두면 된다고 한다. (날짜, 이메일, 아이디)

 

 

'JAVA' 카테고리의 다른 글

Collections.sort(List<T> list, Comparator<? super T> c)  (0) 2020.03.19