실행을 위한 클래스의 main 메서드의 매개변수로 문자열 배열이 들어가는 이유는..?

김철준·2023년 1월 30일
0

JAVA

목록 보기
1/1
class Main {
	public static main(String []args){
    	System.out.println("Hello Java")
    }

}

java 프로그램을 실행시키기 위해서는 실행 클래스가 존재해야한다.
실행 클래스란 말 그대로 실행을 위한 클래스이다.

우리는 실행 클래스에는 반드시 main메서드가 있어야하고 매개변수로 문자열 배열을 가져야한다고 알고있다.

실행을 위해서 왜 main 메서드가 필요한 것인가?

class Main {
	public static main(String []args){
    	System.out.println("Hello Java")
    }

}

프로그램 실행을 위해서는 실행 클래스에 main 메서드가 있어야된다고 했다.
그럼 왜 main 메서드가 있어야 프로그램 실행이 가능한걸까?

이유는 프로그램이 실행되는데에 있어서 main 메서드가 entry point이기 때문이다.

즉, 자바는 main 메서드를 프로그램 실행의 시작 기점으로 삼기 때문에 main 메서드가 필요한 것이다.

때문에 우리는 실행시키고자하는 프로그램 실행을 위하여 실행 클래스에 main 메소드를 선언하여여한다.

그렇다면 왜 main 메서드는 문자열 배열을 매개 변수로 가져야하는 걸까?

문자열 배열이 매개변수로 할당된 예

class Main {
	public static main(String []args){
    	System.out.println("Hello Java")
    }

}

문자열 배열이 매개변수로 할당되지 않은 예

/*오류: chapter1.Hello 클래스에서 기본 메소드를 찾을 수 없습니다. 
다음 형식으로 기본 메소드를 정의하십시오.
 public static void main(String[] args)
또는 JavaFX 애플리케이션 클래스는 javafx.application.Application을(를) 확장해야 합니다. */
class Main {
	public static main(){
    	System.out.println("Hello Java")
    }

}


main 메서드의 매개변수에는 문자열 배열이 들어가도록 되어있다.
문자열 배열을 매개변수로 주지 않으면 위와 같은 에러가 발생한다.

위의 예처럼 매개변수를 사용하지도 않을 것인데 왜 문자열 배열을 매개변수로 할당해줘야하는 것일까?

자바를 설계할 때 실행 클래스로 프로그램을 실행하면 JVM은 길이가 0인 String 배열을 먼저 생성하고 main() 메서드를 호출할 때 매개값으로 전달한다고 한다.

때문에 main()메서드를 호출할 때 문자열 배열이 할당되줘야하는 것인데 클래스의 메서드 선언시 매개변수를 주지 않아 버리니 에러가 발생하는 것이다.

그럼 왜 자바는 설계시에 문자열 배열을 생성하고 매개값으로 전달되도록 설계했을까?

프로그램을 실행할 때 외부에서 프로그램으로 데이터를 전달해줘야하는 경우가 있다.

이 때는 보통 커맨드라인을 통하여 데이터를 전달하면서 명령어로 실행한다. 이 명령어는 문자열이기 때문에 문자열로 인식을 받아야하는것이다.
또 배열인 이유는 여러 가지 데이터가 전달될 수 있기 때문이다.

또한 할당되는 매개변수가 정수열,실수열 등 배열이 아닌 문자열 배열인 이유는 프로그램이 실행되기 위해서는 커맨드라인을 통해 명령어로 프로그램을 실행하는데 커맨드라인 명령행은 문자이기 때문에 문자열 배열이 할당되야하는 것이다.

즉, 매개변수를 문자열 배열로 의무적으로 선언해줘야된다는 규칙의 설계 이유는 외부에서 프로그램 실행시 데이터를 전달할 경우가 있어서이기 때문이다.

profile
FE DEVELOPER

0개의 댓글