안 씀/java-개념

main() 메소드

unhyepnhj 2024. 5. 10. 13:25

main() 메소드

- 자바 응용프로그램의 실행 시작 메소드

 

main()의 원형

- 반드시 static

- 반드시 public

메소드, 접근 지정자, static 멤버 등은 나중에 다시 이해해 봐요

 

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() 메소드의 매개변수로 전달

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() 메소드에서 전달받아 합을 구하는 프로그램 작성