[6일차] 자바 - 인자 전달 방식

SOSO·2022년 4월 22일
0

학원

목록 보기
6/59
post-thumbnail

인자 전달 방식

값 호출 (Call by vaule)

기본 자료형의 값을 인자로 전달하는 방식. 값을 복사하여 전달`

public class MethodArgMain01 {
	//인자 전달 방식: 값 호출
	//기본 자료형의 값을 인자로 전달하는 방식. 값을 복사하여 전달
	//멤버 메서드
	public int increase(int n) {
		++n;
		return n;
	}
	public static void main(String[] args) {
		int var1 =100;
		MethodArgMain01 me = new MethodArgMain01();
		int var2= me.increase(var1);
		System.out.println("var1 : "+var1+", var2 : "+var2);

	}

참조 호출 (Call by reference)

메서드 호출시 전달하려는 인자를 참조(객체) 자료형을 사용할 경우를 의미. 주소(reference)를 복사하여 전달

	//인자 전달 방식 : 침조 호출
	//객체의 주소를 인자로 전달하는 방식. 주소(reference)를 복사하여 전달
	public void increase(int[] n) {
		for(int i=0; i<n.length; i++) {
			n[i]++;
		}
	}
	public static void main(String[] args) {
		//배열의 선언 및 생성, 초기화
		int[] ref1 = {100,200,300};
		System.out.println("====데이터 변경 전====");
		for(int i=0; i<ref1.length; i++) {
			System.out.println("ref1["+i+"]:"+ref1[i]);
		}
		
		//객체 선언 및 생성
		MethodArgMain02 me =new MethodArgMain02();
		//배열의 주소를 복사해서 메서드의 인자에 전달
		me.increase(ref1);
		
		System.out.println("====데이터 변경 후====");
		for(int i=0; i<ref1.length; i++) {
			System.out.println("ref1["+i+"]:"+ref1[i]);
		}

	}

가변인자 (Variable Arguments)

자료형이 일치할 때 전달하고자 하는 값의 개수를 다르게 지정할 수 있다.
전달되는 데이터는 내부적을 배열로 인식함

/*
	 * 가변인자 (Variable Arguments)
	 * JDK5.0이상부터 사용가능
	 * 자료형이 일치할 때 전달하고자 하는 값의 개수를 다르게 지정할 수 있다.
	 * 전달되는 데이터는 내부적을 배열로 인식함
	 */
	public void argTest(int ... n) {
		for(int i=0; i<n.length; i++) {
			System.out.println("n["+i+"]:"+n[i]);
		}
		System.out.println("--------------------------");
	}

	public static void main(String[] args) {
		MethodArgMain03 me = new MethodArgMain03();
		me.argTest(10);
		me.argTest(10,20,30);
	}
profile
한다 열심히

0개의 댓글