자바 - Java/이론
[Java] Java Programming - 참조 호출(Call by reference), 값 호출(Call by value), 가변 인자 매개 변수, Method Overloading
totoscoming
2020. 4. 2. 15:37
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);
}
}