backend/Java

[Java] Java의 main() 메서드

findTheValue 2022. 7. 28. 17:14

자바의 main() 메서드

  • Java 프로그램은 특정 순서로 실행되는 Java 명령의 시퀀스기 때문에 시작과 끝이 있다.
  • Java 프로그램을 실행하려면 JVM에 프로그램 실행을 시작할 위치를 신호해야한다.
  • Java의 모든 명령어(코드)는 Java 클래스 내에 위치해야한다.
  • 클래스는 함께 속한 데이터와 명령어를 그룹화하는 방법이다. 따라서 클래스는 변수와 메서드를 모두 포함 할 수 있다. 변수는 데이터를 포함할 수 있으며, 메서드는 데이터에 대한 작업 집합(명령어)을 함께 그룹화한다.

자바 클래스 선언

  • Java 코드는 클래스와 동일한 파일 이름을 가진 파일에 있어야하며 파일 접미사로 끝나야한다.
  • 즉 파일이 클래스 이름과 일치하는 파일에 있어야 Java SDK의 Java 컴파일러 또는 Java IDE 내부에서 컴파일 할 수 있다.
  • Java 패키지는 단순히 하나 이상의 Java 파일을 포함할 수 있는 파일 시스템의 디렉토리다. 디렉토리가 정상적으로 할 수있는 것처럼 패키지를 중첩 할 수 있다. 예를 들어, 이름을 가진 하드 드라이브의 디렉토리에 해당하는 패키지를 만들 수 있다.
package myjavacode;

public class MyClass {

}
  • Java 파일이 올바른 디렉토리에 있거나 Java 파일 안에 패키지 선언을 하는 것만으로는 충분하지 않다. 두 요구 사항을 모두 충족해야 한다. `MyClass.javamyjavacodepackage myjavacode;`

main()

  • Java 프로그램은 어딘가에서 실행을 시작해야한다.
  • Java 프로그램은 일부 클래스의 main 메소드를 실행하여 시작한다. 실행할 클래스의 이름은 선택할 수 있지만 main 메서드 이름은 선택할 수 없다. main 메서드는 항상 호출되어야 한다.
package myjavacode;

public class MyClass {

    public static void main(String[] args) {

    }
}
  • main 메소드 선언에는 세 가지 키워드가 필요하다. public static void main()
  • 세 개의 키워드 뒤에 메서드 이름이 있다. 요약하자면, 메소드는 단일 작업인 것처럼 실행될 수 있는 명령어 세트다. 메서드를 "호출"(실행)하면 해당 메서드 내의 모든 명령이 실행된다.
  • 다음에 매개 변수 목록이 나타난다. 매개 변수는 변수 (데이터 / 값)로, 메서드의 명령을 사용해 동작을 사용자 정의하는 데 사용할 수있는 메서드에 전달할 수 있다. 메서드는 항상 객체 배열을 가져와야한다.
String[] stringArray
  • 매개 변수를 제공하는 이름은 중요하지 않다. 이름은 자유롭게 선택할 수 있다. `main()StringargsstringArray`
  • 메서드의 매개 변수 목록 다음 왼쪽 중괄호 {가 나오면 빈 공백이 있고 오른쪽 중괄호 }가 나타난다. 중괄호 안에는 메소드가 실행될 때 실행될 Java 명령어가 있다. (=메서드 본문)
  • 메서드 본문에 단일 명령을 삽입해보면
package myjavacode;

public class MyClass {

  public static void main(String[] args) {
    System.out.println("Hello World, Java app");
  }
}
System.out.println("Hello World, Java Program");
  • 이 명령은 텍스트를 *콘솔*에 인쇄한다. 명령 줄에서 Java 프로그램을 실행하면 명령 줄 콘솔 (컴퓨터에 대한 텍스트 인터페이스)에 출력이 표시된다. IDE 내부에서 Java 프로그램을 실행하면 IDE는 일반적으로 콘솔에 대한 모든 출력을 포착하여 IDE 내부의 어딘가에서 볼 수 있다.

main() 실행

  • Java 프로그램을 시작할 때 일반적으로 명령 줄 (콘솔)을 통해 한다. JRE와 함께 제공되는 명령을 호출하고 실행할 Java 클래스와 메소드에 전달할 인수를 알려준다. 그 후 Java 프로그램은 JVM 내에서 실행된다.

![java 명령을 실행하는 명령행으로, Java 기본 프로그램을 실행합니다.](https://jenkov.com/images/java/main-program.png)

**java 명령을 실행하는 명령행으로, Java 기본 프로그램을 실행한다.**
java -cp classes myjavacode.MyClass

이 명령의 첫 번째 명령은 JVM을 시작한다. 경우에 따라 명령이 컴퓨터에 있는 전체 경로(일반적으로 Java 설치 dir의 하위 디렉토리 내부)를 지정해야 할 수도 있다.

두 번째 및 세 번째 인수는 컴파일 된 Java 클래스가 위치한 디렉토리의 JVM에 알려준다. (cp는 클래스 경로를 의미). 이 경우 컴파일된 Java 클래스는 myjavacode라는 디렉토리에 있습니다.

네 번째 인수는 JVM이 실행할 Java 클래스의 이름입니다. 클래스 이름에 있는 패키지 이름("정규화된 클래스 이름")도 어떻게 포함되는지 확인한다.

main() 메서드에 인수 전달

명령줄에서 메서드로 인수를 전달할 수 있다.

java -cp classes myjavacode.MyClass Hello World

JVM이 메소드를 실행할 때 매개 변수로 전달 된 배열에는 "Hello"와 "World"라는 두 개의 문자열이 포함된다.

package myjavacode;

public class MyClass {

    public static void main(String[] args) {
        System.out.println( args[0] );
        System.out.println( args[1] );
    }
}

자바 메인 클래스

Java 프로그램의 단일 Java 클래스에만 main이 포함되어 있는 경우, 메소드를 포함하는 클래스를 종종 *메인 클래스*라고 한다. JVM은 한 번에 하나만 실행하도록 지시 할 수 있다. JVM이 실행하는 메서드 내부에서 다른 메소드를 호출 할 수 있으며 각각 단일 메소드를 실행하는 여러 가상 머신을 시작할 수도 있다. (중첩)

'backend > Java' 카테고리의 다른 글

[Java] 정규표현식  (0) 2022.07.25