본문 바로가기
Work & Study/JAVA (& 혼공자Java)

자바(Java) - 메소드2 (매개 변수 선언)

by a.k.a DUKI 2020. 10. 7.
728x90
반응형

이전 포스팅을 이어서 메소드를 이어간다.

dustink.tistory.com/42

 

자바(Java) - 메소드1 (메소드 선언)

메소드는 객체의 동작에 해당하는 중괄호 { } 블록을 말한다. 중괄호 블록 이름이 메소드 이름 이며, 메소드를 호출하면 블록에 있는 모든 코드들이 일괄적으로 실행 된다. v1 메소드란, 클래스 ��

dustink.tistory.com

 

 

매개 변수 선언

메소드가 실행할 때 필요한 데이터를 외부로부터 받기 위해 사용된다.

 

예시1) divide() 메소드 선언

// 매개변수가 있는 divide() 메소드 선언
double divide(int x, int y) { ... }



//선언된 divide() 메소드를 호출할때 두 개의 int값을 주어야한다.
double result = divide(10, 5);

//int 값 외에 값을 넘기면 에러가 발생된다.
double result = divide(10.3, 5.2); //컴파일 에러

 

하지만, byte로 값을 변경해서 갖고와도 byte는 int로 자동 타입 변환이 되기 때문에 컴파일 에러가 생기지 않는다.

byte b1 = 10;
byte b2 = 5;

double result = divide(b1, b2);

 

예시2) 계산기메소드 선언 및 호출

public class Calculator {

	// 메소드
	void powerOn() {
		System.out.println("전원 들왔다");
	}

	int plus(int x, int y) {
		int result = x + y;
		return result;
	}

	double divide(int x, int y) {
		double result = x / y;
		return result;
	}

	void powerOff() {
		System.out.println("전원 꺼졌다");
	}

}
public class CalculatorEx {

	public static void main(String[] args) {
    		//Calculator 클래스의 메소드 호출을 위해 calc참조변수를 이용
		Calculator calc = new Calculator();
		
        	//calc 변수에 도트(.)와 메소드이름(매개값,..) 형태로 호출
		calc.powerOn();

		//calc 변수에 도트(.)와 메소드이름(매개값,..) 형태로 호출
		int result1 = calc.plus(10, 5);
		System.out.println("result1: " + result1);

		//calc 변수에 도트(.)와 메소드이름(매개값,..) 형태로 호출
		double result2 = calc.divide(10, 5);
		System.out.println("result2: " + result2);
		
        	//calc 변수에 도트(.)와 메소드이름(매개값,..) 형태로 호출
		calc.powerOff();
	}

}

 

 

매개 변수의 개수를 모를 경우

메소드의 매개 변수는 개수가 정해진 것이 일반적이지만, 메소드를 선언할 때 매개 변ㅅ의 개수를 알 수 없는 경우도 있다.

 

이럴때는 매개 변수를 배열 타입으로 선언 하여 해결 할 수 있다.

int sum1(int[] values) { ... } 

sum1() 메소드를 호출할 때 배열을 넘겨줌으로 배열의 항목 값들은 모두 전달 할 수 있다.

배열의 항목 수는 호출할 때 결정된다.!

 

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

int result = sum1(values);
int result = sum1(new int[] {1,2,3,4,5});

 

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

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

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

int sum2(int ... values) { }

//쉼표로 구분
int result = sum2(1,2,3);
int result = sum2(1,2,3,4,5);

// 배열에 직접 매개값으로 사용
int[] values = {1,2,3};
int result = sum2(values);
int result = sum2(new int[] {1,2,3,4,5});

 

예시3) 매개 변수의 개수를 모를 경우

public class Com {
	// 매개 변수를 배열로 선언
	int sum1(int[] values) {
		int sum = 0;
		for (int i = 0; i < values.length; i++) {
			sum += values[i];
		}
		return sum;
	}

	// 매개 변수를 ... 로 선언
	int sum2(int... values) {
		int sum = 0;
		for (int i = 0; i < values.length; i++) {
			sum += values[i];
		}
		return sum;
	}
}
public class ComEx {

	public static void main(String[] args) {
		Com javaCom = new Com();

		// sum1() 메소드 호출
		int[] value1 = { 1, 2, 3 };
		int reuslt1 = javaCom.sum1(value1);
		System.out.println("reuslt1: " + reuslt1);

		int result2 = javaCom.sum1(new int[] { 1, 2, 3, 4, 5 });
		System.out.println("result2: " + result2);

		// sum2() 메소드 호출
		int reuslt3 = javaCom.sum2(1, 2, 3);
		System.out.println("reuslt3: " + reuslt3);

		int result4 = javaCom.sum2(1, 2, 3, 4, 5);
		System.out.println("result4: " + result4);
	}

}

 

 

 

 

 

※용어 정리

  • 매개 변수: 소드 호출 시 제공되는 매개값은 메소드 선언부의 매개변수에 차례대로 대입되어, 메소드 블록 실행 시 이용된다.

 

 

 

본 내용은 #혼자공부하는자바 책을 참고해 공부하려 작성했습니다.
728x90
반응형