20230208 [Java] public static void main(String[] args)

Daisy🌷·2023년 2월 8일
0

자바 코드의 기초

  • 자바의 모든 프로그램은 public static void main(String[] args)함수로 시작한다.

public

  • 제한자 부분으로, 모든 함수의 앞에는 이 함수를 어디에서 접근할 수 있는지 범위를 지정할 수 있다. 제한자는 public, private, protected 종류를 지정할 수 있지만 main 함수만은 public 을 지정해야 한다.
  • 왜?
    main 함수는 모든 실행 프로그램의 기본이 되는 함수여야 한다. 기본이 되는 함수이기 때문에 어디에서나 접근이 가능해야 한다. private 는 해당 클래스에서만 접근이 가능하고 protected는 같은 패키지 내에서만 접근이 가능하다. main 함수의 제한자가 public이 아니라면 main 함수에 접근하지 못하는 클래스가 있을 수 있고 이런 경우가 발생하면 안되기 때문에 public으로 선언되어야 한다.
    - public : 모든 곳에서 접근 가능
    - private : 자기 자신 클래스에서만 접근 가능
    - protected : 자기 자신 클래스와 상속된 클래스에서 접근 가능

ststic

  • 자바는 변수나 함수를 메모리에 할당하는 방법이 2가지 있다. 첫번째는 static 영역에 선언하는 것이고 다른 하나는 heap 영역에 선언하는 것이다.
    1. static
    메모리 할당 기준 : 프로그램 실행되는 순간
    메모리 정리 기준 : 정리 대상 아님
    1. heap
      메모리 할당 기준 : 연산이 실행되는 순간
      메모리 정리 기준 : Garbage Collecto에 의해 정리
  • main 메소드가 heap 영역에 선언되면 어떻게 될까?
    main 메소드는 프로그램에 없어서는 안되는 기본 함수이다.
    이 함수가 Garbage Collector에 의해서 정리되면 안된다.
    따라서 static으로 선언하여 메모리에 항상 상주하도록 설정한다.

void

  • void는 "함수가 끝날 때 리턴값이 없다" 라는 의미이다. 일반 함수는 void를 사용해도 되고 int, char 등 다른 타입을 사용해도 문제 없이 동작한다. 그런데 왜 main 함수만 void여야 할까?
    이유는 main 함수가 종료되면 프로그램이 종료되기 때문이다.
    반면, 일반함수의 경우 정상적 혹은 비정상적인 경우 리턴값을 변수에 담아 다음 단계를 진행할 수 있다. 그래서 main 함수는 void를 의무적으로 사용해야 하고 return 값을 가지기 위해 void 대신 다른 타입을 사용하는 경우 에러가 발생한다.

main

  • main은 그냥 이름이라고 생각해야겠다.

String[] args

  • args 문자열을 배열로 사용하겠다는 의미이다.
  • 모든 함수는 매개변수를 사용할수도 있고 사용하지 않을수도 있다. 이는 main 함수도 마찬가지이다. 그러나 일반 함수는 메인함수 내부에서 호출하기 때문에 입력값을 적어도 main 함수 안에서 정할 수 있다. 그러나 main함수는 프로그램 실행 시 처음으로 수행되는 함수이기 때문에 외부로부터 값을 입력받을 수 있어야 한다. 프로그램 내부에서 값을 호출할수가 없으며 이렇기 때문에 항상 문자열 인자를 받게 된다.
profile
티스토리로 블로그를 이전했습니다. 😂 구경 오세요! 👉🏻 https://u-ryu-logs.tistory.com

0개의 댓글