2013. 7. 25. 16:38

Args, arguments

 : 비정형 인자

 : 매개변수를 배열로 변환하는 키워드



1
2
3
4
5
public void showArgs(int... args)
{
    System.out.println(args[0]);
    System.out.println(args[1]);
}


전달받은 int형 인자값을 args[]배열에 저장하여 배열의 요소를 출력하는 메서드다.

단 이렇게 코드를 작성하면 인자값이 2개가 아닐때 에러가 발생한다. (ArrayIndexOutOfBoundsException)


따라서 런타임 에러를 방지하기 위해선 다음처럼 작성한다.


1
2
3
4
5
6
7
8
public void showArgs(int... args)
{
    for(int i=0; i<args.length; i++)
     //전달받은 인자값만큼 배열의 길이가 결정되므로 그 만큼만 반복
    {
        System.out.println(args[i]);
    }
}

향상된 포문을 활용할 경우 다음과 같다.


1
2
3
4
5
6
7
public void showArgs(int... args)
{
    for(int ns : args)
    {
        System.out.println(ns);
    }
}



다음 예제는 args를 활용한 인자값들의 계산 결과를 구하는 메서드다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Args
{
    public int multiply(int... args)
    {
        int result=1;
         
        for(int ns : args)
        {
            result = result * ns;
        }
         
        return result;
    }
}
 
 
Args a = new Args();
System.out.println(a.multiply(2, 2, 2, 2));
16


1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static void main(String[] args) {
    m1(1, 2, 3); //6
    m1(1, 2, 3, 4); //10
}
     
public static int m1(int... args) {
    int sum = 0;
     
    for(int i=0; i<args.length; i++)
    {
        sum += args[i];
    }
    return sum;
}


'java' 카테고리의 다른 글

상속과 구현, 업캐스팅  (0) 2013.07.25
팩토리얼(재귀호출)  (0) 2013.07.25
연산자 우선순위  (0) 2013.07.25
제어문  (0) 2013.07.25
파일명 일괄변경  (0) 2013.07.25
Posted by 1+1은?