자바/자바 문법

Swap(값 교환)이란?

Blue_bull 2025. 1. 26. 23:17

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 요약

  1. 임시 변수를 사용한 방법 (가장 일반적이고 안정적).
  2. 임시 변수 없이 산술 연산 (a + b, a - b 등).
  3. XOR 연산 (비트 연산으로 임시 변수 없이 안전한 교환).
  4. 배열 또는 객체 활용 (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