2020.10.27 고급자바 가변형인수 메소드

 package kr.or.ddit.basic;


public class ArgsTest {


public static void main(String[] args) {

ArgsTest test = new ArgsTest(); 

int[] nums = {100, 200, 300}; 

int[] nums2 = new int[] {100, 200, 300} ; //배열의 종류 2가지 

System.out.println(test.sumData(nums));  //nums 는 인수 

System.out.println(test.sumData(new int[] {1, 2, 3 , 4 , 5}));

System.out.println("----------------------------------------");

System.out.println(test.sumArgs(100, 200, 300));

System.out.println(test.sumArgs(1,2,3,4,5,6,7));

System.out.println(test.sumArgs2("이순신", 80, 20, 90, 100, 29, 20));

}

//--> 보완 

/*가변형 인수  => 메서드의 매개변수에 주어지는 인수의 개수가 실행될 때마다 다를 때 사용한다. 

*  - 가변형 인수는 메서드 내부에서는 배열로 처리한다. 

*  - 가변형 인수는 한가지 자료형만 사용할 수 있다. 

* 가변형 인수를 사용할 떄 주의할 점 : 가변형 인수와 일반 인수를 같이 사용할 경우에는 가변형 인수를 뒤쪽에 배치한다. 

*/

/*

int k = 0 ; 

test.test(k);

//or 

test.test(0); 


}

public void test(int a ) { 

}

*/

//매개변수들의 합을 계산해서 반환하는 메서드 ==> 배열을 이용한 메서드 

public int sumData(int[] data) {

int sum = 0 ; 

for( int i = 0 ; i < data.length ; i++) {

sum += data[i];

}

return sum ; 

}

//매개변수들의 합을 계산해서 반환하는 메서드 ==> 가변형인수를 이용한 메서드 

public int sumArgs(int...data) {  // int 형 을 가변형으로 만드는데 그것을 data라는 변수에 저장해 놓겠다. 

//이 메서드 안에서 변수 'int...data'는 'int[] data' 와 같다. 즉 배열과 같다. 

int sum = 0 ; 

for (int i = 0 ; i < data.length ; i++) { 

sum += data[i]; 

}

return sum ; 

}

//주의할점 예시 : 가변형 인수와 일반 인수를 같이 사용할 경우에는 가변형 인수를 뒤쪽에 배치한다. 

public String sumArgs2(String name, int...data  /* , float...data2 가변형 변수는 여러개는 사용 불가*/ ) {

// (int...data , String name) 이렇게는 못쓴다. 예시  ( int...data, int name ) 으로 했을때 컴퓨터가 data에 몇개를 넣고 나머지를 name 에다 넣을지 모름  

// ( int name, int k , int j , int...data) 처럼 여러개 쓸 수 있으나 가변형인수는 늘 맨 나중에 쓴다. 

int sum = 0 ; 

for(int i = 0 ; i < data.length; i++) {

sum += data[i]; 

}

return name + "씨의 합계 : " + sum; 

}


}


댓글