JAVA 5강_3_Method_call by value, ★★★call by reference★★★

열라뽕따히·2024년 2월 4일

JAVA

목록 보기
27/79

메서드 호출 방식 2가지

1. call by value 방식

  • 값을 전달하여 호출하는 방식
  • 매개변수가 기본자료형(int, double 등등) 사용

★★★★ 2. call by reference 방식★★★★

  • 주소값을 전달하여 호출하는 방식
  • 매개변수가 참조자료형(배열, 클래스) 일때 사용
  • 자바에서 가장 많이 사용함! 중요!!!!★




1. call by value 방식으로 화면에 출력해보자




============================코드============================

public class MethodExam_07 {
	
	public static void call(int num) {   // 200 값 저장
		
		num = 100;
		
		System.out.println("num >>> " + num);
		
		
	} // call() 메서드 end

	public static void main(String[] args) {
		
		// 1. call by value 방식
		int num = 200;
		
		System.out.println("메서드 호출 전...");
		
		System.out.println("num >>> " + num);
		
		System.out.println();
		
		call(num);  // call() 메서드 생성
		
		System.out.println("메서드 호출 후...");
		
		System.out.println("num >>> " + num);   // 200인 이유 : call 메서드가 끝나면 call의 num값이 초기화됨

	}

}

============================실행============================




★★★★★★★★★★★★★★★★★★★★★★★
2. call by reference 방식으로 화면에 출력해보자!
★★★★★★★★★★★★★★★★★★★★★★★




============================코드============================

public class MethodExam_08 {
	
	public static void change(int[] array) {  // array는 arr에서의 heap의 주소값 따라서 arr주소값을 복사했다는 것!
		
		System.out.println("array >>> " + array);
		
		for(int i = 0; i < array.length; i++) {
			array[i] = array[i] * 10;
		}
		
	} // change() 메서드 end

	public static void main(String[] args) {
		
		// 2. call by reference 방식
		int[] arr = new int[3];
		
		arr[0] = 10; arr[1] = 20; arr[2] = 30;
		
		System.out.println("arr >>> " + arr);
		
		System.out.println("change() 메서드 호출 전...");
		
		for(int i = 0; i < arr.length; i++) {
			
			System.out.println("arr[" + i + "] >>>" + arr[i]);
		}
		System.out.println();
		
		change(arr);  // arr은 heap의 주소값
		
		System.out.println("change() 메서드 호출 후...");
		
		for(int i = 0; i < arr.length; i++) {
			
			System.out.println("arr[" + i + "] >>>" + arr[i]);
		}

	}

}

============================실행============================

0개의 댓글