✏️ Static (정적인,고정의) :
- java 코드 상에서 모든 객체가 공유할 수 있다는 의미를 가지고 있다.
- JVM에서 메모리에 딱 한번 올라가 고정적으로 할당되며, 프로그램이 종료될 때 해제된다.
- 객체를 선언하지 않아도 접근할 수 있다.
예시)
public class Test {
public static void test1() {
System.out.println("test1");
}
public void test2() {
System.out.println("test2");
}
}
public class Main {
public static void main(String[] args) {
Test.test1(); // 사용 가능
Test.test2(); // 사용 불가능
Test test = new Test();
test.test1(); // 사용 불가능
test.test2(); // 사용 가능
}
}
✏️ 장점 :
- 생성 할때마다 메모리가 올라가는 것이 아니라, 고정 메모리이므로 효율적이다.
- 객체를 생성하지 않고 접근하기때문에 참조속도가 빠르다. (사용을 안하고 있어도 메모리에 잡히기 때문이다. 반대로 객체생성으로 만들어진 인스턴스는 GC(Garbage Collecion)에 의해 소멸된다.)
✏️ 단점 :
- 무분별한 사용은 메모리 낭비를 발생할 수 있다.
- 값이 자주 바뀌는 객체를 Static으로 사용할 경우 공유자원이므로 예상치 못한 오류가 발생하여 디버깅이 힘들어질 수 있다.
✏️ Static을 효율적으로 사용하기 :
- 공유하는 값에 사용
- 절대적으로 변하지 않는 값인 경우 final과 함께 사용한다. (ex. 하루인 24시간, 파이값 등)
✏️ Static은 객체 생성 없이 공유하며 사용해 메모리를 효율적으로 사용할 수 있지만 무분별한 사용은 비효율적인 상황을 발생시킬 수 있다.
'Java' 카테고리의 다른 글
[Java] Reflection API (0) | 2024.02.18 |
---|---|
[Java] Iterator, Enumeration (0) | 2023.10.17 |
[Java] Optional이란? Optional 개념 및 사용 (0) | 2023.10.05 |
[Java] import static 사용하는 이유 (0) | 2023.08.09 |
Intellij tomcat 연동 및 설정 (gradle) (0) | 2023.05.19 |