static이란 무엇인가?

초월차선·2023년 2월 1일

Java

목록 보기
2/14

자바를 해본 사람이라면 아래의 코드를 수도 없이 많이 봐왔을 것이다. 그런데, 오늘은 이미 배운public 접근제한자 말고 static 이라는 것에 대해 알아보겠다.
먼저, static의 사전적의미는 '정적인', '고정된' 이라는 의미이다. static은 클래스, 필드, 메서드 등에 사용할 수 있는데, 위의 코드는 메서드에 사용한 것으로 보면된다. 즉, main메서드도 메서드라는 것이다.

public static void main(String[] args) {
}

static 사용법

public class test{
	//정적필드
    static int a=1;
    
    //정적메서드
    static int plus(int a, int b){
    	return a+b;
    }
}

위의 test클래스처럼 static을 이런식으로 사용할 수 있는데, 왜 static이라는 것이 필요한가에 대해 생각해보자. static으로 선언한 객체는 서로다른 패키지 내에서 어디서든 접근이 가능하고, 인스턴스를 생성하지 않고도 사용가능하다. 그래서 static을 필드영역에서 사용할때, 아래코드 처럼 상수로서 많이 사용한다. final의 의미는 최종적이라는 뜻으로, 초기값이 아래처럼 저장되면 이것이 최종적인 값이 되어서 더 이상 수정이 불가능하다는 의미이다. 그리고 상수로 선언할때, 개발자들의 약속처럼 상수명을 아래와 같이 모두 대문자로 사용한다.

public static final int DETAILPAGE=5;

이런식으로 상수로 지정해 두면 다른 패키지에서 언제든지 이 상수를 가지고 있는 클래스를 생성(new) 할 필요없이 사용할 수 있어 편하다. static으로 선언한 메서드도 다른 패키지나 클래스에서 접근이 가능하다. 어떻게 이렇게 가능한 것일까를 알아보기 위해서는 자바작동원리의 특징인 static, stack, heap영역에 대해 알아야 한다. 이부분은 다음시간에 이어서 설명하겠다.


신입 개발자라 잘못 정리된 부분이나 보충할 부분이 있을 수 있으니, 메시지나 댓글을 달아 주시면 감사하겠습니다.

0개의 댓글