Static 사용?

SeungJoo
|2023. 10. 27. 23:38
728x90

Static?

정적 변수는 특정 클래스와 연관된 변수를 나타냅니다. 이러한 변수는 클래스 수준에 정의되며 해당 클래스의 모든 객체 인스턴스 간에 공유됩니다.

이미지 출처[ [Java] Static 완전정복!!(jongminlee0.github.io) ]

정적변수 (Static Variables)

특정 클래스와 관련이 있으며 클래스의 모든 인스턴스(객체)에 의해 공유되며 동일한 값 또는 상태를 가집니다. 정적 변수는 객체 지향 프로그래밍 언어에서 자주 사용되며 클래스의 모든 인스턴스가 공유해야 하는 데이터를 저장하는 데 유용합니다. 정적 변수에는 클래스 이름을 사용하여 액세스 할 수 있으며 객체 참조가 아닌 클래스 이름을 이용합니다.

class MyClass{
    Static int staticVar = 10;

정적 변수 액세스

int value = MyClass.staticVar;

정적 메서드 (Static Methods)

특정 인스턴스에 속하지 않고 클래스 자체에 속하는 메서드입니다. 이런 메서드는 객체를 생성하지 않고도 클래스 이름을 통해 호출할 수 있습니다. 정적 메서드는 주로 유틸리티 함수 또는 클래스와 관련된 작업을 할 때 사용됩니다.

class math {
    static int add (int a, int b){
        return a+b;
    }
}

정적 메서드 호출

int result = math.add(5,3);

Static 사용

정적 변수를 사용하면 클래스 수준의 데이터를 공유할 수 있고 상수 값을 정의하는 데 사용됩니다.  또한 클래스 내에서 객체 인스턴스와 관련이 없이 유틸리티 함수를 구현할 때 정적 메서드를 사용됩니다.

// 유틸리티 함수 = 프로그램에서 자주 사용되는 작업을 수행하는 함수

클래스가 메모리에 올라갈 때 이미 자동적으로 생성되기에 공통 값을 유지해야 할 때도 사용됩니다.

메서드에서 인스턴스변수를 필요로 할 때는 static을 사용하지 않습니다.

메서드에서 인스턴스변수를 필요로 하지 않을 때는 static 사용합니다.

 

Static 장점

  • 메모리 효율적 사용 가능
  • 속도 빠름

Static 단점

  • 테스트 어려움
  • 객체 지향 원칙에 위배 
728x90

'JAVA' 카테고리의 다른 글

Lambda  (0) 2023.10.29
HashSet, HashMap  (0) 2023.10.23
Generics  (1) 2023.10.22