public static void main(String[] args)
{
어쩌구 저쩌구~
}
자바에서는 이런 식으로 메인함수가 구성이 된다. 그런데, String[] args 는 무엇일까? 어디에 쓰는 물건일까?
일반적으로 메서드를 만들 때, 매개변수가 있는 메서드가 있는 것과 없는 것이 있다. 가령 아래처럼
void NoValue() { 어쩌구 } // 매개변수가 없다
void YesValue(int a) { 저쩌구 } // 매개변수가 있다 1개
void MultiValue(char a, long b) { 이런저런.. } // 매개변수가 있다. 2개
이런 식으로 구성될 수 있다. 그렇다면 모든 메서드에 저렇게 매개변수를 넣을 수도 있고 안 넣을 수도 있다면, 메인함수에도 매개변수란 걸 넣을 수 있을 것이다. 그 때 사용되는 매개변수가 String[] args 인 것이다.
여기서, String[] 는 String 형의 배열이라는 것이고, args는 그 String[] 의 변수명이 되는 것이다. 이 때, args라는 변수명은 단지 변수명이기 때문에 args가 아닌 다른 것이 와도 프로그램에서는 무방하다. 하지만, String[]의 경우에는 이미 내부적으로 정해진 타입이기 때문에 바뀔 수가 없다. 그렇다면, 왜 String[]를 쓰는 것일까? 이는 main 함수의 사용처를 보면 된다. 다른 메서드의 경우에는 이미 프로그램 내부에서 호출되기 때문에 아래와 같이 호출을 할 수가 있다.
YesValue(100); // 인자값으로 100을 넣어서 호출
그런데, main함수는 프로그램의 시작과 동시에 호출되는 데, 그렇다면 어떻게 매개변수를 넣어줄 것인가? 그것은 프로그램을 호출할 때(실행 할 때) 넣어주게 된다. 가령 아래와 같은 형식이다.
c:/test>java Plming Com 100
java Plming 이라는 것은 Plming이라는 자바를 컴파일 해서, 실행시에 사용되는 것이고, 그 뒤에 공백으로 띄어서 붙여주는 것이 매개변수가 되는 것이다. 여기서는 Com 과 100이라는 것이 매개변수가 되게 된다. 즉 실행 시에 빈 공백으로 구분을 짓고 뒤에 붙이는 것들이 모두 main 함수의 매개변수가 되는 것이다. 이는 각각 args[0] = "Com", args[1] = "100" 이라는 값으로 들어가게 되는 것이다.
이런 식으로 프로그램 실행 시에 뒤에 붙여서 사용되기 때문에 String형으로 했으며, 또한 매개변수의 개수가 일정하지 않으므로(프로그램 마다), 배열로 지정해서 필요한 만큼 사용할 수 있도록 해준 것이다.
사실 이러한 main 함수가 언제 사용되는지에 대해서 궁금할 런지도 모르겠지만, 사실상 "Hello World" 라는 프로그램을 사용할 때부터 사용하고 있었다. 프로그램을 컴파일시에
c:\test>javac Plming.java
이런 식으로 하게 된다. 이는 javac라는 프로그램에 매개변수로 Plming.java를 준 것이다. 그리고, 그 매개변수로 파일명을 알아내서 javac라는 프로그램에서 내부적으로 그 파일을 컴파일하는 구문이 구현되어 있는 것이다.
이러한 경우 이외에도 보통 프로그램 실행시에 뒤에 붙이는 /a /어쩌구 옵션들이 모두 main 함수의 매개변수로 들어가게 되는 것이다.
c:\test>v3 c: /a
많이 어설픈 설명이긴 하지만, 그래도 이제 조금은 String[] args 의 실체를 알 수 있지 않을런지.. 하는 기대감으로.. 이만 줄입니다~~
첫댓글 아 좋아요...많은 도움이 되었어요..
integer형이 안되는 이유는요...? 숫자만 입력 받으면 된다면 첨부터 integer형인게 낫지 않나요??
하핫.. 질문은 Q&A에서 게시물 내용말씀하시면서 질문 해주시지. ^^;; 여기는 잘 보니까요.. ㅋㅋ 숫자만 입력을 받을지 무엇을 입력받을지 정해져 있지 않으니까요.. 모든 것을 받기 위해서 String형으로 하는거죠.. 다른 형으로 바꿀 수도 있으니까요..
감사합니다. 이해하고 넘어갑니다.
정말 감사드려요~