728x90
Call by Value vs Call by Reference
@2024.03.19
메서드에 매개변수로 어떤 것이 전달되는지에 따라 두 가지 방식으로 나뉜다.
Call by Value
💡
메서드의 매개변수로
값
이 복사되어 함수의 인자로 전달되는 방식- 매개 변수는 스택 영역에 새로운 변수로 할당되고, 그 값을 복사 받는다.
- 메서드 내에서 값의 변경이 메서드 호출한 곳에 영향을 주지 않는다.
- 예시
public class CallByValueExample { public static void main(String[] args) { int x = 10; System.out.println("Before calling method, x = " + x); modifyValue(x); System.out.println("After calling method, x = " + x); } public static void modifyValue(int num) { num = num + 5; System.out.println("Inside method, num = " + num); } }
Call by Reference
💡
메서드의 매개변수로
참조
가 인자로 전달되는 방식- 전달받은 변수가 메모리 영역에서 가리키는 주소 영역 자체를 넘겨받는다.
- 메서드 내에서 값의 변경이 메서드 호출한 곳에 영향을 준다.
- 예시
public class CallByReferenceExample { public static void main(String[] args) { MyClass obj = new MyClass(10); System.out.println("Before calling method, obj.value = " + obj.value); modifyReference(obj); // Call by Reference System.out.println("After calling method, obj.value = " + obj.value); } public static void modifyReference(MyClass obj) { obj.value = obj.value + 5; System.out.println("Inside method, obj.value = " + obj.value); } } class MyClass { int value; MyClass(int value) { this.value = value; } }
728x90
'JAVA' 카테고리의 다른 글
클래스 (0) | 2024.03.31 |
---|---|
네이밍 컨벤션 (0) | 2024.03.31 |
얕은복사 vs 깊은복사 (0) | 2024.03.31 |
Scanner 클래스 (0) | 2024.03.31 |
정적 변수 vs 인스턴스 변수 (0) | 2024.03.31 |