MODE::CREATIVE

[JAVA] 자바의 main() 메서드 본문

JAVA

[JAVA] 자바의 main() 메서드

LEE MINGYU 2025. 1. 11. 15:26

자바의 main() 메서드


1. main() 메서드란?

main() 메서드는 자바 프로그램의 시작점으로, JVM(Java Virtual Machine)이 프로그램 실행 시 가장 먼저 호출하는 메서드입니다. main() 메서드의 정확한 선언 형태는 다음과 같습니다.

public static void main(String[] args)

2. main() 메서드의 구성

2-1. 접근 제어자 (public)

  • public: 메서드가 어디서든 접근 가능하도록 지정합니다.
  • JVM은 프로그램 시작 시 main() 메서드를 호출해야 하므로, 반드시 public으로 선언해야 합니다.

2-2. 정적 메서드 (static)

  • static: main() 메서드는 클래스의 객체를 생성하지 않고도 호출되기 때문에 정적으로 선언됩니다.
  • static으로 선언하지 않으면, JVM이 main() 메서드를 호출하기 위해 객체를 생성해야 하므로 실행이 불가능합니다.

2-3. 반환 타입 (void)

  • void: main() 메서드는 아무 값도 반환하지 않으므로, 반환 타입이 void로 선언됩니다.

2-4. 매개변수 (String[] args)

  • String[] args: main() 메서드는 문자열 배열을 매개변수로 받습니다.
  • 프로그램 실행 시, **명령행 인자(Command Line Arguments)**를 전달받을 수 있습니다.

3. main() 메서드의 동작 흐름

  1. JVM이 프로그램 실행 시 main() 메서드를 호출합니다.
  2. main() 메서드는 전달받은 명령행 인자를 처리하거나 프로그램 로직을 실행합니다.
  3. 모든 작업이 끝나면 main() 메서드가 종료되며, 프로그램도 종료됩니다.

4. main() 메서드의 예제

4-1. 기본 구조

public class MainExample {
    public static void main(String[] args) {
        System.out.println("Hello, Java!");
    }
}
  • 실행 결과: Hello, Java!

4-2. 명령행 인자 활용

public class CommandLineExample {
    public static void main(String[] args) {
        System.out.println("명령행 인자 개수: " + args.length);
        for (String arg : args) {
            System.out.println("인자: " + arg);
        }
    }
}
  • 실행:
    java CommandLineExample Hello World Java
    
  • 실행 결과:
    명령행 인자 개수: 3
    인자: Hello
    인자: World
    인자: Java
    

5. 명령행 인자 활용하기

5-1. 간단한 합계 계산 프로그램

명령행에서 전달받은 숫자들의 합계를 구하는 프로그램입니다.

public class SumCalculator {
    public static void main(String[] args) {
        int sum = 0;
        for (String arg : args) {
            sum += Integer.parseInt(arg);
        }
        System.out.println("합계: " + sum);
    }
}
  • 실행:
    java SumCalculator 10 20 30
    
  • 실행 결과:
    합계: 60
    

6. main() 메서드의 주의사항

  1. 정확한 선언:
    • main() 메서드는 반드시 public static void main(String[] args) 형태로 선언해야 합니다.
    • 다른 형태로 선언할 경우, JVM은 실행할 수 없습니다.
  2. String[] args:
    • 매개변수를 선언하지 않아도 컴파일 에러는 발생하지 않지만, 명령행 인자를 사용할 수 없습니다.
  3. 명령행 인자 타입 변환:
    • 명령행 인자는 항상 문자열 형태로 전달되므로, 숫자 등의 타입으로 사용하려면 형 변환이 필요합니다.
      int num = Integer.parseInt(args[0]); // 문자열을 정수로 변환
      
  4. JVM이 호출:
    • main() 메서드는 프로그래머가 직접 호출하지 않고, JVM이 호출합니다.

7. main() 메서드 활용 예제

7-1. 명령행으로 전달된 문자열 연결

public class StringJoinExample {
    public static void main(String[] args) {
        String result = String.join(" ", args);
        System.out.println("연결된 문자열: " + result);
    }
}
  • 실행:
    java StringJoinExample Java is fun!
    
  • 실행 결과:
    연결된 문자열: Java is fun!
    

7-2. 프로그램 종료 코드

System.exit()를 사용하여 특정 종료 코드를 반환할 수 있습니다.

public class ExitExample {
    public static void main(String[] args) {
        System.out.println("프로그램 실행");
        System.exit(0); // 0: 정상 종료
    }
}

8. main() 메서드의 확장 활용

8-1. main()에서 다른 메서드 호출

main() 메서드는 프로그램의 시작점일 뿐, 실제 작업은 다른 메서드에서 수행하도록 작성하는 것이 일반적입니다.

public class MethodExample {
    public static void main(String[] args) {
        printMessage();
    }

    public static void printMessage() {
        System.out.println("메서드 호출 성공!");
    }
}
  • 실행 결과: 메서드 호출 성공!

9. main() 메서드의 한계와 보완

  • 입력 데이터 제약: 명령행 인자로 제한된 데이터를 전달받습니다.
  • GUI 프로그램: main() 메서드는 CLI(Command Line Interface) 기반이므로, GUI 기반 프로그램의 진입점으로 사용되지는 않습니다.

자바의 main() 메서드는 모든 응용 프로그램의 시작점으로, 정확한 형태와 동작 방식을 이해하는 것이 중요합니다. 명령행 인자 활용 및 다른 메서드 호출과 같은 기본 패턴을 익히면 다양한 프로그램을 개발할 수 있습니다.

'JAVA' 카테고리의 다른 글

[JAVA] 자바의 예외처리  (0) 2025.01.11
[JAVA] 자바의 배열(Array)  (0) 2025.01.11
[JAVA] java의 입력(Buffered reader)  (0) 2024.11.17
[JAVA] java의 입력(Scanner)  (0) 2024.11.10
[JAVA] java의 연산자, 조건문, 반복문  (1) 2024.11.10