JAVA_09_기본형 매개변수 & 참조형 매개변수

hyeong taek jo·2023년 7월 4일

JAVA

목록 보기
9/39

📌📌📌1. 기본형 매개변수(중요)

  • 변수의 값을 읽기만 할 수 있다.(read only)
  • call by value 방식(값을 전달)
  • data의 값에 의한 호출
  • data에 직접적으로 영향을 줄 수 없다.
  • 기본형(int,double.. 등)을 매개변수로 활용

📌📌📌2. 참조형 매개변수(중요)

  • 변수의 값을 읽고 변경할 수 있다
  • call by reference 방식(객체 참조 주소 전달
  • data의 메모리 주소에 의한 호출
  • data에 직접적으로 영향을 줄 수 있다.
  • 객체, 배열을 매개변수로 활용

예시

class Data {
	int kor;
	int eng;
	int math;
	
	// call by reference // 배열, 객체를 넘겨주면 reference // 메소드에서 바뀐값이 다른곳에서도 유효하다.
	void addRef(Data d1, Data d2) { //매개변수가 나의 객체인것
		d1.kor = d2.eng;
		System.out.println("call by reference addRef Method 국어 점수 : " + d1.kor);
	}
	
	//call by value //기본형 매개변수를 넘겨주면 메소드 내에서만 영향을 준다
	void addValue(int kor, int eng) {
		kor = eng;
		System.out.println("call by value addValue Method 국어점수 : "+ kor);
	}
}

public class DataEx {

	public static void main(String[] args) {
		Data d1 = new Data();
		Data d2 = new Data();
		Data d3 = new Data();
		
		d1.kor = 50;
		d1.math = 70;
		d2.eng = 80;
		
		//Instance를 넘겨주면 주소값을 넘겨주는 효과
		System.out.println("1. call by referencer After ");
		d3.addRef(d1, d2);
		System.out.println("Main 국어점수 :" + d1.kor);
		System.out.println("2. call by value After ");
		d3.eng = 55;
		d3.kor = 70;
		d3.addValue(d3.kor, d3.eng);                 // 메소드에서 변경된 값
		System.out.println("Main 국어점수 : "+ d3.kor);// 위에 메소드에서는 변경됬지만 원래 기본값은 변경되지 않는다.
	}
}
  1. call by referencer After
    call by reference addRef Method 국어 점수 : 80
    Main 국어점수 :80
  2. call by value After
    call by value addValue Method 국어점수 : 55
    Main 국어점수 : 70
profile
마포구 주민

0개의 댓글