320x100
320x100
앞의 글들을 보고 왔다면 자바에서의 Call By Value때문에 특정 메서드 내에서 지지고 볶아도 값이 바뀌지 않는다는 것을 알 수 있을 것이다
Call by Value with primitive type - 잘못된 사용
- 실행결과
두 값이 바뀔 수 있도록 해보자!!
Custom Wrapper Class 사용(Call by Value with mutable reference type)
임시로 값을 담을(Wrapping) 클래스를 정의하자
잘 바꼈다!!
근데 뭔가 좀 아쉽다.. 더 개선할 수 있는 부분이 없을까??
IntegerWrapper를 GenericWrapper로 변환
자바의 Generic을 활용해 어떤것이든 담을 수 있게 해보자
Generic으로 담았기 때문에 Integer, Long타입 둘 다 값이 바뀌는 것을 확인해봤다
몇 가지 값을 바꿀 수 있는 추가적인 방법을 알아보자
Collections.swap() 사용
Collections.swap(List, index1, index2)을 사용해서 바꿀 것이다
그럼 당연히 예상가능한건, List에 값을 담고, 참조한 값을 primitive value로 사용하면 된다는 것!
여기부터는 재밌는 방법들에 대해서 알아본다
값 복사와 재할당, 반환을 이용한 방법
이 swap 함수는 일반적이다. 그럼 이 함수를 호출하는 부분을 상상해보자..
이게 어떻게 된걸까? 주석 + 코드로 설명해봤다
함수에서 바꾸지 않고, 값 계산식으로만 사용해서 바꾸기 (Single-line Swap)
아래에 주석으로 설명을 달아놓았다
bitwise XOR(^) 연산자 사용하기
이전 식에서 ( )를 사용해서 변수 초기화와 값으로 변경할 수 있다는 것을 알았다
두근두근.. 로직을 설명해본다
먼저 XOR 연산자(^)는 여러 특징을 갖고 있다
위에처럼 아래에 주석으로 설명을 달아놓았다
이해가 됐길 바란다 끗!!
320x100
댓글