public static void main(String[] args)

박영준·2022년 12월 2일
0

Java

목록 보기
14/111

1. 정의

public class ABC {
 	public static void main(String[] args) {
    // static public void main(String[] args)  public 과 static 순서 바꿔도 무방
 		...
        
        System.out.println(...);
    }    
 }
  • 위와 같은 형태로 main() 메소드가 사용된다.

    • public static void main(String[] args) : main 메소드의 선언부
    • Java 어플리케이션에는 main 메소드를 포함한 클래스가 하나 이상 반드시 필요
      • 그래야 Java 어플리케이션이 실행된다
  • java.exe에 의해 호출될 수 있도록 미리 약속된 부분

  • main() 메소드 안에서만 System.out.print 을 선언 가능하다!

2. 동작 방식

  1. javac 컴파일러로 ABC.java 컴파일

    javac ABC.java -encoding utf-8
  2. ABC.class 파일 생성

  3. ABC.class 파일 실행

    java ABC

3. 구성

1) public

참고: 캡슐화, 접근 제한자, Getter/Setter, Setter 의 대안

2) static

참고: static

3) void

참고: void 와 return

4) String[] args

(1) 배열 선언

String 객체로 정의된 args 라는 이름의 배열로 파라미터를 받겠다.
→ 즉, 배열 선언

배열 선언하는 방식
String[] args
String args[]
String... args

(2) String[]

String 배열을 파라미터로 받는다.

(3) args

args 는 변수명(파라미터의 이름)

String[] blingbling
String blingbling[]
String... blingbling

따라서, blingbling 처럼 다른 이름으로해도 문제 없다.

(4) String[] args 의 필요성

  • String[] args 를 사용하지 않는다면
    컴파일은 가능하지만, 엔트리 포인트가 없어 실행할 수 없는 상태가 된다.

    없는 경우, 다음과 같은 문제가 발생하게 됨

  • JVM(런처)의 엔트리 포인트로, 단 1개의 메인 메서드만 허용됨을 알 수 있다.
    public static void main (String[] args)
    → 따라서, 오버로딩된 다른 형태의 main 함수는 엔트리 포인트로 동작하지 않는다.

    public class Main {
        // 유일하게 엔트리 포인트로 동작
        public static void main (String[] args) {
            System.out.println("main 메소드 - String[] args");
        }
    
        // main 메소드 오버로딩 → 동작 X
        public static void main (Integer num) {
            System.out.println("main 메소드 - Integer num");
        }
    
        // main 메소드 오버로딩 → 동작 X
        public static char main(char c) {
            System.out.println("main 메소드 - char c");
    
            return 'c';
        }
    }

엔트리 포인트 (Entry Point)

  • 프로그램이 시작되는 시작점
  • c, c++, java 등... : main 함수가 엔트리 포인트로 사용된다.
    python, javascript 등... : main 함수가 아닌 인터프리터가 코드를 읽기 시작한 부분부터 진행

참고: [JAVA] this 의미와 사용법
참고: 자바 - this와 this( )의 용도 및 사용예제
참고: [Java] 자바 static의 의미와 사용법
참고: 07-03 스태틱(static)
참고: [Java] static이란?
참고: [JAVA] 메인 메소드 public static void main(String[] args) 알아보기
참고: 생성자 대신 정적 팩터리 메서드를 고려하라
참고: [Java] 자바 상수 final의 의미와 사용법

profile
개발자로 거듭나기!

0개의 댓글