Call by Reference는 함수 호출 시 변수의 메모리 주소를 전달하는 방식입니다.
함수 내부에서 전달받은 주소를 통해 원본 데이터를 직접 수정할 수 있습니다.
class Person {
String name;
}
public class Main {
public static void updateName(Person person) {
person.name = "Updated Name"; // 원본 객체의 속성 변경
}
public static void main(String[] args) {
Person person = new Person();
person.name = "Original Name";
System.out.println("Before: " + person.name); // Original Name
updateName(person); // 객체의 참조가 전달됨
System.out.println("After: " + person.name); // Updated Name
}
}
Before: Original Name
After: Updated Name
updateName 함수는 객체의 참조를 전달받아 원본 데이터를 수정합니다. | 특징 | Call by Value | Call by Reference |
|---|---|---|
| 전달 내용 | 변수의 값을 복사하여 전달 | 변수의 메모리 주소를 전달 |
| 원본 데이터 변경 가능성 | 불가능 (기본 타입) | 가능 (참조 타입) |
| 사용 언어 | Java(기본 타입), C | Java(참조 타입), C++ |
Java는 기본 타입에서는 Call by Value, 참조 타입에서는 Call by Reference처럼 동작한다는 점이 인상 깊었습니다. 객체의 참조를 활용하여 데이터를 수정할 수 있는 강력한 기능이지만, 코드의 가독성과 데이터 안전성을 고려해야 한다는 점을 배웠습니다. 함수 내부에서 객체를 다룰 때는 원본 데이터에 영향을 줄 수 있음을 항상 염두에 두고, 불변 객체(Immutable Object)를 적극적으로 활용하는 것이 중요하다고 느꼈습니다.