-
[Java] Swap 함수 구현 (Call-by-value)프로그래밍 언어/Java 2021. 10. 15. 18:26
# Call-by-Reference 의 Swap 함수
- 객체나 배열이 인자로 들어왔을 때, 주소값이 복사되므로 멤버(배열원소)에 직접 접근하여 값을 바꾸면 바꿔진다.
- 따라서, 일반적인 temp 를 두는 방식으로 값을 교환하면 된다.
# Call-by-value 의 Swap 함수
- primitive type(int, float, double, ...) 의 값을 바꿔야 하는 경우
- Wrapper Class 또한 데이터를 담고있는 멤버에 직접접근 권한이 없기에 해당 경우로 취급하여 주소값 자체 값으로 취급하여 바꿔주면 된다.
# 구현 코드
/* Call-by-Value */ public class SwapTest1 { public static int swap(int a, int b){ return a; } public static void main(String[] args) { int a=10, b=20; // 첫번째 인자 a 가 값이 복사되고, 두번째인자 a=b는 a가 b로 바뀐 후 값이 복사되어 b의 값으로 함수로 전달됨 // 함수의 리턴값은 두번째인자가 무엇이든 관계없이, 첫번째 인자인 a이므로, b는 a 의 값으로 바뀜 b = swap(a,a=b); } } /* Call-by-Reference */ public class SwapTest2 { public static void swap(MyObj a, MyObj b){ MyObj temp = new MyObj(); temp.value = a.value; a.value = b.value; b.value = temp.value; } }
728x90'프로그래밍 언어 > Java' 카테고리의 다른 글
[Java] ThreadLocal 이 필요할 때 (feat. Thread, Thread-Safe, OS, Spring Security) (0) 2022.03.15 [Java 성능개선] for 루프와 String 연산, 입출력 (0) 2022.01.26 JAVA) 백준으로 공부하는 자바일기 (Dynamic Programming) (0) 2021.10.08 [Java] 프로그래머스로 다시 공부하는 자바일기 (프로그래머스 레벨2) (0) 2021.10.05 [Java] 깊은복사(deepcopy) (0) 2021.10.04