공부하는 블로그

Main메소드에 static을 사용하는 이유? / static의 정의 본문

Develop/JAVA

Main메소드에 static을 사용하는 이유? / static의 정의

모아&모지리 2018. 1. 18. 22:11

public - 접근 제한자 (public 은 어디서든 사용가능한 제한이 없음)

static - 메모리에서 제일 먼저 실행되는 static 

void - 리턴 (반환)값을 의미합니다. main 메소드는 반환해야하는 값이 없습니다.

리턴값이 없을 때는 void 를 사용합니다.

main - 메소드입니다. Java가 실행되면 가장 먼저 실행되는 메소드가 메인 메소드입니다.

String[] - String형의 배열을 의미합니다.

args - 배열의 이름을 의미합니다.




main에 static을 사용하는 이유


 static은 java프로그램이 실행하기 전에 static 함수나 static 변수를 첫번째로 메모리에 올려 프로그램을 실행시킵니다. 

프로그램이 종료될 때 까지 사라지지않음


main 함수가 실행되기 위해서는 메모리에 미리 올라가야 합니다.

메모리에 올라가있지 않으면 시작점인 main ()메소드를 호출하려고 하는데

메모리에는  main이 없기 때문에 실행을 할 수 없습니다.


main메소드도 누군가의 호출되기 전에는 메모리에 올라가지 않습니다.

그래서 main을 호출하기 위해서는 main 메소드 내용이 있어야하는데 이 main메소드는 누군가 호출하기전에 

미리 메모리에 있어야 하기 때문에 static을 붙이는 것입니다. 그러면 시작점으로 main이 실행됨



Static의 정의

클래스에 static이라고 변수나 메소드를 지정한다면 그 변수나 메소드는 메모리가 독립적이여서 객체화 (인스턴스화) 시키지 않아도 메모리를 가지고 있으며 객체는 각각의 메모리를 갖지만 static을 모두 동일한 하나의 값이나 메소드로 갖는다


객체의 멤버 변수가 아닌 클래스 변수로 선언이 된다

즉 객체로 선언을 하지 않아도 메모리를 가져 사용을 할 수 있게 된다

어떤 객체라도 동일한 주소의 변수를 참조한다.



Static으로 선언된 메소드는 오버라이딩이 될까?

가능하지 않다 메모리가 독립적이므로 오버라이딩 할 수 없다