[Java] 자바 String[] args (프로그램 아규먼트)


프로그램 아규먼트 (String[] args)?


자바에서 가장 먼저 코드를 로딩하는 곳은 main()이다.

 

ex) 

public static void main(String[] args) {...}


main() 메서드 {...} 블록 안에 코드를 작성해주면 JVM은 가장 먼저 이곳을 읽어들인다.



그런데 대체 String[] args는 무엇을 의미하는가? 


역사 :

- 이클립스를 사용하기 전에는 명령창을 통해서 java 확장자 파일을 class 파일로

  직접 컴파일 시켰다. 그리고 컴파일된 class 파일의 디렉토리 주소를 찾아가 다음과

  같이 도스 창에 명령어를 작성해주었다.

  > java -cp bin step08.Test01_1


이렇게 class 파일을 로딩할 경우 JVM은 main() 메서드 안에 있는 코드를 순서대로 

읽게 된다. 그런데 main() 메서드 코드를 읽을 때 특정 파라미터 값을 바로 넘겨주고

싶을 때가 생긴다. 이때 args라는 이름을 가진 String[] 배열을 파라미터 값으로 넘기는

시도를 하게 된다.


class 파일이 생성된 디렉토리를 찾아가 다음과 같이 명령어를 주면 

String[] args 형태의 파라미터 값을 넘겨줄 수 있다.

> java -cp bin step08.Test01_1 aaa bbb ccc 111 222

굵게 칠한 부분이 바로 각각 String 타입의 args 배열 값이다.


그래서 만약 main() 메서드에 다음 코드

System.out.println(args[0], args[1], args[2], args[3], args[4]); 를 써주게 되면


- 실행 결과 :

aaa, bbb, ccc, 111, 222


이렇게 출력이 된다.


정리 : 

프로그램 아규먼트 (String[] args)

- 프로그램을 실행할 때 넘겨주는 값

- 예) 클래스 파일 뒤에 "aaa bbb ccc 111 222"와 같은 값을 넘겨줘 보자.

  > java -cp bin step08.Test01_1 aaa bbb ccc 111 222

- 이처럼 클래스 이름 뒤에 값을 주게 되면 공백을 기준으로 문자열을 잘라서 배열에

  담아 main() 메서드의 파라미터 값으로 넘어온다. 

블로그 이미지

필로그래머

,