main() 메소드
main() 메소드
- 자바 응용프로그램의 실행 시작 메소드
main()의 원형
- 반드시 static
- 반드시 public
main() 메소드의 특징
1. public
- public 접근 지정자는 해당 메소드가 다른 클래스에서 호출 가능함을 나타냄
- 자바 응용 프로그램이 실행을 시작할 때 자바 가상 기계(JVM)에 의해 호출되어야 하므로 public 속성으로 선언
2. static
- 객체가 생성되기 전에 호출되므로 static속성으로 선언
3. void 타입으로 리턴
- 아무 값도 리턴하지 않으므로 void 타입
- main()메소드를 끝내기 위해 리턴하려면 return;문을 사용
4. 문자열 배열(String [])이 매개변수로 전달
- 명령행에 입력된 인자들을 문자열 배열로 만들어 main()메소드에 전달
main() 메소드의 매개변수
main() 메소드의 매개변수에 어떤 값이 어떻게 전달될까?
C:\>java Hello option1 option2 ... optionN //Hello 클래스를 실행하는 명령의 사례
- option1, option2, ..., optionN은 명령행 인자(command line argument)
- 이들 모두 Hello 클래스의 main() 메소드의 매개변수로 전달
- Hello 클래스의 main() 메소드가 시작되기 전, 인자들은 각각 문자열로 만들어지고 String 배열에 저장
- 문자열 배열에 대한 레퍼런스가 main()의 매개변수 args에 전달
//args를 이용하여 명령행 인자를 전달받는 코드
public static void main(String [] args){
String a = args[0]; //a는 "abc"
String b = args[1]; //b는 "3"
String c = args[2]; //c는 "5.7"
}
이클립스에서 main() 메소드의 인자 전달
- main() 메소드에 인자를 전달하기 위해 명령창을 열고 "java Hello abc 3 5.7"을 입력할 필요 없음
- 이클립스에서 Run메뉴의 Run Configurations 항목에서 main() 메소드에 전달할 인자 지정 가능
- main(String[] args) 메소드에서 args[]는 모두 String 타입이므로 필요 시 다른 타입으로 변환하여 사용
- 명령행 인자의 개수는 length 필드를 사용해 알 수 있음
예제 3-13 사용자가 명령행에 입력한 실수들을 main() 메소드에서 전달받아 합을 구하는 프로그램 작성