Swap(값 교환)
Swap
은 두 변수의 값을 서로 맞바꾸는 작업입니다. Java에서 이를 구현하는 방법을 살펴보겠습니다.
1. 기본적인 Swap 기법
가장 단순한 방법은 임시 변수를 활용하여 값을 교환하는 것입니다.
public class SwapExample {
public static void main(String[] args) {
int a = 5;
int b = 10;
// Swap 시작
int temp = a; // 임시 변수에 a 저장
a = b; // a에 b 값 저장
b = temp; // b에 임시 변수(temp)의 값 저장
System.out.println("a: " + a); // 10
System.out.println("b: " + b); // 5
}
}
2. Swap Without Temporary Variable (임시 변수 없이 교환)
산술 연산자를 사용하여 값을 교환할 수 있습니다.
하지만 이 방식은 값이 매우 큰 경우(오버플로)가 발생할 수 있으니 주의해야 합니다.
public class SwapWithoutTemp {
public static void main(String[] args) {
int a = 5;
int b = 10;
// Swap 시작
a = a + b; // a는 15 (5 + 10)
b = a - b; // b는 5 (15 - 10)
a = a - b; // a는 10 (15 - 5)
System.out.println("a: " + a); // 10
System.out.println("b: " + b); // 5
}
}
3. XOR 연산자를 활용한 Swap
XOR 비트 연산을 사용하면 임시 변수 없이 안전하게 값을 교환할 수 있습니다.
이 방식은 정수형 변수에 적합합니다.
public class SwapUsingXOR {
public static void main(String[] args) {
int a = 5;
int b = 10;
// Swap 시작
a = a ^ b; // a는 a XOR b
b = a ^ b; // b는 (a XOR b) XOR b = a
a = a ^ b; // a는 (a XOR b) XOR a = b
System.out.println("a: " + a); // 10
System.out.println("b: " + b); // 5
}
}
4. Java에서 Swap 활용
Java에서 배열이나 객체를 사용하면, 값을 쉽게 교환할 수 있습니다.
배열을 이용한 Swap
import java.util.Arrays;
public class ArraySwap {
public static void main(String[] args) {
int[] nums = {5, 10};
// Swap 시작
int temp = nums[0];
nums[0] = nums[1];
nums[1] = temp;
System.out.println(Arrays.toString(nums)); // [10, 5]
}
}
객체를 이용한 Swap
class Wrapper {
int value;
Wrapper(int value) {
this.value = value;
}
}
public class ObjectSwap {
public static void main(String[] args) {
Wrapper a = new Wrapper(5);
Wrapper b = new Wrapper(10);
// Swap 시작
int temp = a.value;
a.value = b.value;
b.value = temp;
System.out.println("a: " + a.value); // 10
System.out.println("b: " + b.value); // 5
}
}
Swap 요약
- 임시 변수를 사용한 방법 (가장 일반적이고 안정적).
- 임시 변수 없이 산술 연산 (
a + b
,a - b
등). - XOR 연산 (비트 연산으로 임시 변수 없이 안전한 교환).
- 배열 또는 객체 활용 (Java의 구조를 활용한 교환).
'자바 > 자바 문법' 카테고리의 다른 글
보조 제어문(break, continue) (0) | 2025.01.26 |
---|---|
반복문이란? (0) | 2025.01.26 |
Casting(형변환)이란? (0) | 2025.01.26 |
new 연산자란? (1) | 2025.01.24 |
참조 변수와 기본 자료형 변수 (0) | 2025.01.21 |