Language/JAVA

(JAVA)public static void main(String[] args)란?

doheun 2023. 1. 10. 10:16
반응형

자바를 공부하면서 main메서드의 String[ ] args가 어떤 의미인지 문득 궁금해졌다.

일반적으로 메서드를 만들면서 main 메서드에서 (String [] args)는 매개변수를 받는 공간인데 자바 내부에서 컴파일 할 때 꼭 필요한 부분일까?

String [] args를 없애고 실행하면 아래와 같은 오류가 뜬다.

메인메서드를 public static void main(String[] args)로 하거나 JavaFX클래스를 확장하라고 한다.

(참고로 JavaFX는 데스크톱이나 임베디드에서 실행하는 UI 어플리케이션을 개발할 수 있도록 UI를 제공하는 도구이다)

JavaFX는 넘어가고

public static void main(String[] args)를 하나씩 보자

public

자바에서 접근제한자 부분으로, 모든 메서드 혹은 변수 앞에 설정하고 싶은 범위에 따라 자유롭게 지정할 수 있다.

하지만 main메서드에서는 public이 아닌 private나 protected를 사용할 경우 위에서 본 오류와 비슷한 오류가 발생한다.
main메서드는 모든 프로그램을 실행 시키는 기본함수이기 때문에 어디서나 접근이 가능해야하기 때문에 public을 사용한다.

static은 자바에서 메서드나 변수를 메모리에 할당하는 방식에 따라 구분을 짓는다.
메모리의 구조는 데이터들이 어떤방식으로 올라가는지 이해하는데 아주 중요한 부분이기 때문에 꼭 알아 두어야한다.
실제로 메모리의 구조는 4가지영역으로 나누고 자바에서는 static , stack , heap 세가지를 알면 된다.

static

  • static에서는 패키지나 클래스의 정보를 올리는데 프로그램 시작과 동시에 올라가는 것이 아니고 실제로 호출 될 때 올라가게 된다.
  • static으로 선언된 클래스 내에 다른 변수나 메소드도 함께 static의 영역에 올라가 static 영역에 있는 것은 어디에서나 접근이 가능하다.
  • static변수는 누구나 접근해서 수정할 경우 혼란을 가져오기 때문에 읽을 때만 사용하는 것이 좋다.
  • static영역에 들어가게될 경우 JVM이 종료될 때까지 static상태로 유지된다.

void

void부분은 메서드의 반환 타입을 결정하는 부분으로 int , string 등 다른 타입의 자료형이 들어올 수 있다.

다른 메서드에서는 위에서 말한것과 같이 어떤 타입이 들어와도 상관이 없지만 main메서드는 프로그램을 실행시키고 종료시키는 함수 이기 때문에 반환값을 가질 수가 없다. 따라서 void를 사용하고 다른 타입을 넣게 되면 오류가 발생한다.

반응형

'Language > JAVA' 카테고리의 다른 글

(JAVA)String 메서드(문자열 자르기)  (0) 2023.01.13
(JAVA)String 비교  (0) 2023.01.13
(JAVA)final 예약어  (0) 2023.01.12
(JAVA)클래스 관련 용어  (0) 2023.01.11
(JAVA)아스키코드와 유니코드  (0) 2023.01.10