Static
1. Static 정리
Java에서 Static 키워드를 사용한다는 것은 메모리에 한번 할당되어 프로그램이 종료될 때 해제되는 것을 의미한다.
이를 정확하게 이해하기 위해서는 메모리 영역에 대한 이해가 필요하다.
일반적으로 우리가 만든 Class는 Static 영역에 생성이 된다. 그리고 new 연산자를 통해 생성한 객체는 Heap 영역에 생성이 된다.
객체의 생성시에 할당이된 Heap 영역의 메모리는 Garbage Collector를 통해 수시로 관리를 받는다.
하지만 Static 키워드를 통해 Static 영역에 할당된 메모리는 모든 객체가 공유하는 메모리라는 장점이 있지만, Garbage Collector의 관리 영역 밖에 존재하므로 Static을 자주 사용하면 프로그램의 종료시까지 메모리가 할당된 채로 존재하기 때문에 시스템의 퍼포먼스에 악영향을 주게 된다.
[Static 변수 특징]
1. Static 변수는 클래스 변수이다.
2. 객체를 생성하지 않고도 Static 자원에 접근이 가능하다.
Static변수와 Static 메소드는 메모리 영역에 존재하므로 객체가 생성되기 이전에 이미 할당 되어 있다.
따라서 객체의 생성없이 바로 접근(사용)할 수 있다.
2. Static 변수 (정적 변수) 와 Static 메소드 (정적 메소드)
Static 변수를 한마디로 정의하면 메모리에 고정적으로 할당되어, 프로그램이 종료될 때 해제되는 변수이다.
Static 메소드는 객체의 생성 없이 호출이 가능하며, 객체에서는 호출이 가능은 하지만 지양하고 있다.
일반적으로 유틸리티 관련 함수들은 여러 번 사용이 되기때문에 Static 메소드로 구현 하는것이 적합하다.
Static 메소드를 사용하는 대표적인 Util Class로는 java.util.Math가 있다.
3. Static 변수와 Static 메소드의 활용
import java.util.Scanner;
public class Test1 {
public static final String app = "test";
String app2 = "test2";
public static int add(int x, int y){
return x + y;
}
public int min(int x,int y){
return x - y;
}
public static void main(String[] args){
int a = Test1.add(10,5);
Test1 aa = new Test1();
int b = aa.min(10,5);
System.out.println(Test1.app);
System.out.println(aa.app2);
System.out.println(a);
System.out.println(b);
}
}
참고: 미냐님의 블로그
'프로그래밍 언어 > Java' 카테고리의 다른 글
Java 자바의 메모리 구조 (stack , heap , static) (0) | 2022.09.17 |
---|---|
Java 자바의 배열 정렬(Sorting) (0) | 2022.08.07 |
Java 자바의 추상 클래스와 추상 메소드 (0) | 2022.08.06 |
Java 자바의 getter, setter (0) | 2022.08.06 |
Java 자바의 Class (0) | 2022.08.06 |