반응형
Static이란?
시작과 동시에 Static영역에 저장된다. 공유할 변수, 메소드가 있을시에 static을 붙여서 사용하고 class같은 경우에는 내부클래스에서 사용이 된다.
static을 호출할때는 class이름을 사용하여 호출해야한다. static영역같은 경우 프로그램이 종료하면 자동으로 소멸된다.
- 클래스 내부에서는 얼마든지 직접 접근이 가능하다
- 클래스 외부에서는 인스턴스의 이름이나 클래스의 이름을 통해 접근하는 것도 가능하다.
Static 변수 사용 이유
- 인스턴스 간에 데이터 공유가 필요한 상황에서 static 변수를 선언한다.
Static 메소드란?
인스턴스를 생성하지 않아도 static 메소드를 호출할 수 있다.
사용 이유는 객체를 생성할 필요가 없는 메소드에 붙인다. 인스턴스 변수에 접근하지 않는다면 static 메소드로 정의해야 한다.
Static 클래스
정적 클래스는 new 키워드를 사용해서 인스턴스를 만들 수 없다. 정적 클래스느 class키워드 앞에 static 키워드를 선언해서 만든다.
정적 클래스의 모든 멤버는 static으로 선언되어야 한다. 정적클래스는 생성자를 포함할 수 없다. 정적클래스는 객체들이 처음 호출될 때 생성되고 프로그램이 종료될 때 해제되기 때문에 정적 클래스는 어디서든 접근할 수 있다.
전역적으로 접근해야 하는 유틸리티 클래스를 만들 떄 정적 클래스로 만들면 유용하게 사용할 수 있다.
public static class Calculator
{
public static int Plus (int a, int b)
{
return a + b;
}
public static int Minus (int a, int b)
{
return a - b;
}
}
public class Program
{
static void Main (string[] args)
{
int addResult = Calculator.Plus(5, 3);
int minusResult = Calculator.Minus(5, 3);
}
}
Static을 언제 붙여야할까?
- 속성(멤버 변수) 중에서 공통 속성에 static을 붙인다.
- 인스턴스 멤버(iv,im)을 사용하지 않는 메서드에 static을 붙인다.
'Language > Java' 카테고리의 다른 글
다형성 (0) | 2021.09.19 |
---|---|
상속, 패키지, 접근 제어자 (0) | 2021.09.16 |
객체지향 언어 (0) | 2021.09.12 |
public static void main(String[] args) (0) | 2021.09.07 |
final 클래스, 메소드, 변수 (0) | 2021.09.07 |