본문 바로가기
Language/Java

가변인자

by 태윤2 2020. 5. 27.
  • Variable Arguments (VARARGS) = 가변 인자 = 비정형 인자
  • 메서드 파라미터의 인자가 변하는 형태(갯수의 제한이 없는 인자)
  • 메서드 선언부의 파라미터 부분에 변수 선언 시 가변인자 기호(...)를 사용하여 표현
  •   => 파라미터의 데이터 타입 뒤에 ... 기호를 붙임
  •   - 가변인자를 사용하여 메서드를 정의하면 메서드 호출 시 파라미터 갯수에  제한이 없어짐
  •   => 단, 같은 타입의 인자만 전달 가능
  •    - 전달받은 데이터는 변수명에 해당하는 1차원 배열로 자동으로 생성됨
  •    - 주의! 가변인자는 마지막 파라미터로 단 한번만 지정 가능

Parameter = 매개변수(받는값)

Arguments = 전달변수(주는값)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<기본 문법>
 
제한자 리턴타입 메서드명(데이터타입...변수명){}
 
 
class VariableArguments{ // 가변인자를 사용할경우
    public void variableArgument(int... nums){ // 전달받는 데이터를 갯수에 상관없이 nums 배열로 관리
    // 1. 일반 for문 사용
    for(int i = 0 ; i<nums.length ; i++){
       System.out.println(nums[i]);
    }
    // 2. 확장 for문 사용(원하는 시작지점 또는 범위를 지정할수없음 )
    for(int num : nums){
    System.out.println(num);
    }
}
 
cs

 

 

 

가변인자를 활용한 계산기

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
    
    public void calc(char cal, int... nums) {
        int total = nums[0];
        if(cal == '+') {
            for(int i = 1; i< nums.length; i++) {
                total += nums[i];
            }
        }else if(cal == '-') {
            for(int i = 1; i< nums.length; i++) {
            total -= nums[i];
            }
        }else if(cal == 'x') {
            for(int i = 1; i< nums.length; i++) {
                total *= nums[1];
            }
        }else if(cal == '/') {
            for(int i = 1; i< nums.length ; i++) {
                total /=nums[i];
            }
            
        }
        System.out.println(" = " + total);
    }
    public void calc(String opr, int... nums) {
        int total= 0;
        if(opr == "+") {
            for(int num :nums) {
                total +=num;
            }
        }
        System.out.println(total);
    }
 
cs

 

'Language > Java' 카테고리의 다른 글

Pass by value & Pass by reference  (0) 2020.05.28
접근제한자 (Access Modifier = 접근제어자)  (0) 2020.05.28
메서드 오버로딩(Method Overloading)  (0) 2020.05.27
메서드(Method)  (0) 2020.05.27
Class  (0) 2020.05.26