CAFE

자바 Base

[[강좌]]main(String[] args) - 메인함수의 매개변수

작성자플밍지기|작성시간07.04.24|조회수781 목록 댓글 5
 

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 의 실체를 알 수 있지 않을런지.. 하는 기대감으로.. 이만 줄입니다~~



                                 Pride Of PlmingZIGI™

다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
  • 작성자GoldPro | 작성시간 04.04.18 아 좋아요...많은 도움이 되었어요..
  • 작성자롱~이* | 작성시간 04.10.06 integer형이 안되는 이유는요...? 숫자만 입력 받으면 된다면 첨부터 integer형인게 낫지 않나요??
  • 작성자플밍지기 작성자 본인 여부 작성자 | 작성시간 04.10.17 하핫.. 질문은 Q&A에서 게시물 내용말씀하시면서 질문 해주시지. ^^;; 여기는 잘 보니까요.. ㅋㅋ 숫자만 입력을 받을지 무엇을 입력받을지 정해져 있지 않으니까요.. 모든 것을 받기 위해서 String형으로 하는거죠.. 다른 형으로 바꿀 수도 있으니까요..
  • 작성자유령상 | 작성시간 09.07.20 감사합니다. 이해하고 넘어갑니다.
  • 작성자방글이 | 작성시간 09.09.04 정말 감사드려요~
댓글 전체보기
맨위로

카페 검색

카페 검색어 입력폼