public static void main(String[] args)?

김경태·2022년 9월 19일

Java 기초

목록 보기
3/7

자바의 모든 프로그램은 public static void main(String[] args) 함수로 시작한다. 자바는 어플리케이션이 실행되면 제일 먼저 main 함수를 실행한다. 내가 만든 모든 자바 클래스는 main 함수 아래에서 돌아가는 것이고, 프로그램이 종료된다는 것은 메인 함수가 종료된다는 것을 의미한다.

public

제한자가 위치하는 부분으로 모든 함수의 앞에는 이 함수를 어디에서 접근할 수 있는지 범위를 지정할 수 있다. main 함수는 반드시 public을 지정해야 한다. 왜냐하면 main 함수는 모든 프로그램의 기본이 되는 함수이기 때문에 어디에서나 접근이 가능해야 한다. 만약 main 함수의 제한자가 public이 아니라면 main 함수에 접근하지 못하는 클래스가 있을 수 있고, 이런 경우가 발생하면 안되기 때문에 public으로 선언해야 한다.

접근제한자(Access Modifier)

  • public: 모든 곳에서 접근 가능
  • private: 자기 자신 클래스에서만 접근 가능
  • protected: 자기 자신 클래스와 상속된 클래스에서 접근 가능

static

자바는 변수나 함수를 메모리에 할당하는 방법이 2가지 있다.

staticheap
메모리 할당 기준프로그램 실행되는 순간연산이 실행되는 순간
메모리 정리 기준정리 대상 아님Garbage Collector 에 의해 정리

main 메서드가 heap 영역에서 선언된다면, Grabage Collector에 의해 메모리가 정리되어 프로그램이 종료될 수 있다. 따라서 static으로 선언하여 메모리에 항상 상주하도록 설정한다.

void

void는 '함수가 끝날 때 리턴값이 없다'라는 의미이다.
main 함수만 void여야 하는 이유는 main 함수가 종료되면 프로그램이 종료되기 때문에 return값의 의미가 없기 때문이다.

main

자바의 시작은 main 함수명으로 시작해야 한다는 규칙이 있다.

String[] args

args 문자열을 배열로 사용하겠다는 의미이다.
args는 변수명이기 때문에 꼭 args가 아니어도 상관 없으나, String[] args 구문 자체를 뺄 수는 없다.
모든 함수는 매개변수를 사용할 수도 있고 않을 수도 있다. 이것은 main 함수도 마찬가지이다. 그러나 일반 함수는 메인 함수 내부에서 호출하기 때문에 적어도 main 함수 안에서 정할 수 있다.
그러나 main 함수는 프로그램 실행 시 처음으로 수행되는 함수이기 때문에, 외부로부터 값을 입력받을 수 있어야 한다. 프로그램 내부에서 값을 호출할 수 없으며, 이렇기 때문에 항상 문자여 인자를 받게된다.

class Test {
  public static void main (String[] args) {
    System.out.println(args[0]);
 
    strMethod("def");
  }
  public static void strMethod(String srg) {
    System.out.println(srg);
  }
}

커맨드라인에서 클래스 호출 시 넘겨받는 arguments 가 string 타입 배열로 들어간다.

java Test "abc"
abc
def

https://mozi.tistory.com

profile
잊지 않기 위해 기록

0개의 댓글