본문 바로가기

공부/JAVA

[JAVA]매개변수의 수를 모를 경우

메인 메소드를 볼 때마다 인자값으로 되어있는 


String[] args


왜 이렇게 쓰는지 궁금했었는데, 과방에 있는 책을 흝어보다가 그 해답을 찾았다.


그 이유는 바로


메소드를 선언할 때 매개 변수의 개수를 알 수 없는 경우


이기 때문이었다.


예시)

int sum1(int[] values);


int[] values = {1, 2, 3};

int result = sum1(values);


하지만


매개 변수를 배열 타입으로 선언하면, 메소드를 호출하기 전에 배열을 생성해야하는 불편한 점이 있다. 


그래서 배열을 생성하지 않고 값의 리스트만 넘겨주는 방법도 있다.


이 때는 매개 변수를 '...' 을 사용해서 선언하게 되면, 


메소드 호출 시 넘겨준 값의 수에 따라 자동으로 배열이 생성되고 매개값으로 사용하게 된다.


예시) 

int sum2(int ... values){ }


int result = sum2(1, 2, 3, 4, 5);

int result2 = sum2(1, 2, 3);


int[] values = {1, 2, 3};

int result3 = sum2(values);  //...로 선언된 매개 변수는 배열타입이므로, 배열을 직접 매개값으로 사용해도 ㄱㅊ