logo

자바 메인() 메소드

main()은 JVM이 Java 프로그램 실행을 시작하는 시작점입니다. main() 메소드가 없으면 JVM은 프로그램을 실행하지 않습니다. main() 메소드의 구문은 다음과 같습니다.

자바 메인 메소드

공공의: 액세스 지정자입니다. JVM이 프로그램의 실행 지점을 식별할 수 있도록 main() 메서드 앞에 public 키워드를 사용해야 합니다. main() 메소드 이전에 private, protected 및 default를 사용하면 JVM에 표시되지 않습니다.

공전: static 키워드를 사용하여 메서드를 정적으로 만들 수 있습니다. 객체를 생성하지 않고 main() 메서드를 호출해야 합니다. 정적 메소드는 객체를 생성하지 않고 호출하는 메소드이므로 main() 메소드를 호출하는 데 객체가 필요하지 않습니다.

무효의: Java에서는 모든 메소드에 반환 유형이 있습니다. Void 키워드는 main() 메서드가 어떤 값도 반환하지 않는다는 것을 컴파일러에 인식합니다.

기본(): JVM에 미리 정의된 기본 서명입니다. 프로그램을 한 줄씩 실행하고 이 메소드가 완료된 후 실행을 종료하기 위해 JVM에 의해 호출됩니다. main() 메소드를 오버로드할 수도 있습니다.

문자열 인수[]: main() 메서드는 사용자로부터 일부 데이터도 받아들입니다. 문자열 배열이라고 하는 문자열 그룹을 허용합니다. 문자열 값 형식으로 명령줄 인수를 보유하는 데 사용됩니다.

 main(String args[]) 

여기서 agrs[]는 배열 이름이고 String 유형입니다. 이는 문자열 그룹을 저장할 수 있음을 의미합니다. 이 배열은 숫자 그룹도 저장할 수 있지만 문자열 형식으로만 저장할 수 있다는 점을 기억하세요. main() 메소드에 전달되는 값을 인수라고 합니다. 이러한 인수는 args[] 배열에 저장되므로 일반적으로 args[]라는 이름이 사용됩니다.

String args[] 없이 main() 메서드를 작성하면 어떻게 되나요?

JVM이 main() 메소드를 인식하지 못하기 때문에 프로그램이 컴파일되지만 실행되지는 않습니다. JVM은 항상 문자열 유형 배열을 매개변수로 사용하여 main() 메소드를 찾습니다.

실행과정

먼저 JVM은 정적 블록을 실행한 다음 정적 메서드를 실행하고 프로그램에 필요한 객체를 생성합니다. 마지막으로 인스턴스 메서드를 실행합니다. JVM은 가장 높은 우선순위에 따라 정적 블록을 실행합니다. 이는 JVM이 프로그램에서 main() 메소드를 찾기 전에 먼저 정적 블록으로 이동함을 의미합니다.

 class Demo { static //static block { System.out.println('Static block'); } public static void main(String args[]) //static method { System.out.println('Static method'); } } 

산출:

 Static block Static method 

프로그램에 정적 블록이 있으면 JVM이 먼저 정적 블록을 실행하는 것을 관찰했습니다. 그런 다음 main() 메서드를 검색합니다. main() 메소드를 찾을 수 없으면 오류가 발생합니다.

main() 메소드가 없는 프로그램은 런타임 시 오류를 발생시킵니다.

 class DemoStaticBlock { Static //static block { System.out.println('Static block'); } } 

산출:

 Error: Main method not found in the class Demo, please define the main method as: public static void main(String[] args) or a JavaFX application class must extend javafx.application.Application 

따라서 main() 메소드는 항상 다음과 같이 작성되어야 합니다.

 public static void main(String args[]) 

public과 static을 바꿔서 다음과 같이 작성할 수 있습니다.

 static public void main(String args[]) 

String 유형 배열에 다른 이름을 사용하여 다음과 같이 작성할 수도 있습니다.

 static public void main(String[] x) 

main() 메소드를 작성하는 다양한 방법은 다음과 같습니다.

 static public void main(String []x) static public void main(String...args) 

문자열...인수: 이는 메소드가 0개 또는 여러 개의 인수를 허용하도록 허용합니다. 문자열과 배열 사이에는 정확히 세 개의 점이 있어야 합니다. 그렇지 않으면 오류가 발생합니다.

main() 메소드가 없지만 성공적으로 컴파일되고 실행되는 프로그램입니다.

 abstract class DemoNoMain extends javafx.application.Application { static //static block { System.out.println('Java'); System.exit(0); } } 

산출:

 Java 

main() 메소드 오버로딩

main() 메소드를 오버로드할 수도 있습니다. 클래스에서 main() 메서드를 원하는 만큼 정의할 수 있지만 메서드 서명은 달라야 합니다.

 class OverloadMain { public static void main(int a) //overloaded main method { System.out.println(a); } public static void main(String args[]) { System.out.println('main method incoked'); main(6); } } 

산출:

우르피 자베드
 main method invoked 6