자바로 프로그래밍 하면 메인(main)메서드에 'public static void main'를 붙여 다음과 같이 작성한다.
java public static void main(String[] args) {}
원래 이렇게한다는 관성으로 그동안 프로그래밍을 해왔는데, 왜 메인 메서드에는 public static구조를 사용할까?
하나씩 쪼개서 각각 무엇을 의미하는지 파악후 합쳐 구조를 생각해보자.
1.public
public은 접근제어자라 부른다. 제한 없이 어디에서나 사용가능하다.
2.static
static은 정적이라는 뜻이다. static은 클래스, 메서드에 사용되며 static클래스, static메소드라 부른다. 인스턴스 클래스와 변수에서는 static클래스, 메소드를 호출할 수 있지만, static클래스와 메소드에서는 불가능하다. static으로 선언되면 자바가 컴파일 시작되는 시점에 정의된다. 또한 객체생성을 하지 않아도 static메서드를 사용할 수 있다.
3.void
return과 다른 메서드 반환형이다. 값을 반환하는 return과 달리 void는 반환할 값이 없고 단지 메서드가 종료되면 호출한 곳으로 돌아간다.
4.main
:통상 쓰이는 메서드 이름이다. 별 뜻은 없다.
5.String[] args
:메서드의 매개변수다. 이름이 args인 String타입의 배열이다.
6.결론
자, 각각의 의미를 살펴봤으니 합쳐서 생각해보자. 자바는 main메서드가 먼저 실행된다. 그런데 메서드가 실행되기 위해선 메모리에 미리 올라가야한다. 그래서 static을 선언하여 메모리 할당(new = 인스턴스 생성)을 하지 않아도 사용할 수 있게 한다. 특히 main 메서드는 자바 가상 머신(JVM)에 의해 호출되기 때문에 static으로 선언되어 미리 로드되어야 한다.
가장 먼저 실행되어야 할 main은 어디에서나 호출이 가능해야(public)하고 미리 메모리에 미리 올라가 있어야 한다.(static) 그래서 public static을 사용한다.
'기혁씨의 삽질표류기' 카테고리의 다른 글
[삽질표류기/DB] JDBC와 DB연결 설정 (0) | 2022.12.28 |
---|---|
[삽질표류기/SQL] WHERE과 HAVING의 차이? (0) | 2022.12.28 |
[에러] 매핑 과정에서 발생한 NullPointerException (0) | 2022.09.27 |
[에러] 화면 안 넘어가는 문제 (0) | 2022.09.15 |
[에러] NullPointerException (0) | 2022.09.14 |