Call by reference

  • 참조에 의한 호출
  • 주소값을 전달

 

Call by value

  • 값에 의한 호출
  • 값을 전달

 

Call by name

  • 이름에 의한 호출
  • Ex) func();

▽ 예제 코드 1 ▽

public class Exam_01 {
	
	public static void method(int[] arr) {
		
		arr[2] = 100; 
		
	}
	
	public static void func() {}
	
	public static void func1(int num) {}
	
	public static void func2(int[] nums) {}
	
	public static int test(int a) {
		return 50;
	}
	
	public static void main(String[] args) {
		
		int[] arr = new int[] {1, 2, 3, 4, 5};
		method(arr); // Heap에 있는 arr 값의 주소값이 전달됨
		System.out.println(arr[2]); // 참조에 의한 호출 call by reference
		func(); // 이름에 의한 호출 call by name
		func1(100); // 값에 의한 호출 call by value
		func2(new int[] {1, 2, 3}); // call by reference
		
		int a = 0;
		a = test(a);
		System.out.println(a);
		
	}
	
}

 

 

 

 

 

가변 인자 매개 변수

  • 매개 변수에 몇 개의 개수가 들어갈지 모를 때 사용
  • 메서드 안에서는 배열처럼 사용하면 됨

▽ 예제 코드 2 ▽

public class Exam_02 {
	
	public static void func(String... str) { // 가변 인자 매개 변수
		
		// 가변 인자 쓸 때는 배열처럼 사용하면 됨
		for(int i = 0; i < str.length ; i++)
			System.out.println(str[i]);
		
	}
	public static void main(String[] args) {
		
		func("Hello", "world");
		
	}

}

 

 

 

 

 

Method Overloading

  • 메서드의 이름이 같아도 매개 변수의 종류 또는 개수가 다르면 다른 메서드로 인식함
  • 매개 변수 O, 리턴 타입 X

▽ 예제 코드 3 ▽

public class Exam_03 {
	
	// Method Overloading
	// 메서드의 이름이 같아도 매개 변수의 종류 또는 개수가 다르면 다른 메서드로 인식함
	// 매개 변수 O, 리턴 타입은 X
	public static void func() {System.out.println("A");}
	public static void func(int num) {System.out.println("B");}
	public static void func(int num1, int num2) {System.out.println("C");}
	public static void func(double d) {System.out.println("D");}
		
	public static void main(String[] args) {
		
		func();
		func(10);
		func(10, 20);
		func(1.0);
		
	}
}

 

 

 

 

 

+ Recent posts