IT/JAVA

자바(Java) static 키워드

바다, 2018. 1. 17. 12:32
반응형

자바(Java) static 키워드



프로그래밍에서 변하지 않는 일정한 값이나 설정 정보와 같은 공용 자원에 관한 자원들이 있습니다.


그러한 자원들에 대한 접근에 있어서 매번 메모리에 로딩하고, 값을 읽어 들이는 것보다


전역 변수와 같은 개념을 통하여 접근하는 것이 효율성를 높이고, 자원 비용을 줄일 수 있습니다.


자바에서는 이러한 전역 변수 형태의 접근을 가능하게 만들어 주기 위해 static (정적) 이라는 키워드를 제공합니다.


static 키워드는 변수나 메서드에 사용이 가능합니다.


static이란 클래스가 로딩 될 때 결정된 메모리 공간이 변하지 않음을 의미합니다.


클래스내의 변수나 메서드를 static으로 선언하게 되면, 그 변수는 객체의 변수가 아닌 클래스 변수가 됩니다.


클래스 변수이므로 어떠한 객체라도 동일한 주소값으로 참조하게 됩니다.


그리고 static 변수와 메서드는 클래스가 메모리에 올라갈 때 이미 자동적으로 생성되기 때문에,


인스턴스를 생성하지 않고, 아래와 같이 사용할 수 있습니다.


ClassName.staticVariable


ClassName.staticMethod();



이처럼 static이 붙은 메서드에서는 인스턴스 생성 없이 호출이 가능하지만,


인스턴스 변수는 인스턴스를 생성해야만 존재하기 때문에 static이 붙은 static 메서드 내에서는 인스턴스 변수를 사용할 수 없습니다.


반대로, 인스턴스 변수나 인스턴스 메서드에서는 static이 붙은 멤버들을 사용하는 것이 가능합니다.


위에서 언급했듯이, static 으로 선언하게 되면 클래스가 메모리에 올라갈 때, 이미 메모리에 생성되었기 때문입니다.



static 키워드는 전역 변수의 성격을 띄기 때문에,


적절하지 않게 사용하게 된다면, 오히려 시스템에 악영향이 되거나 심각한 오류의 원인이 될 수 있습니다.


따라서 static 키워드를 사용할 경우, 신중히 고려 해야합니다.




static 사용의 예인 싱클톤 패턴 (Singleton Pattern)을 참고하시면 더욱 이해하기 쉬울 것입니다.


싱글톤 패턴 (Singleton Pattern)  클릭 바로가기 


public class Singletone {


private static Singletone singletone;

private Singletone() {

}

public static Singletone getInstance() {

if (singletone == null) {

singletone = new Singletone();

}

return singletone;

}

}




반응형