개발/이것저것

정수형 변수 스왑하기

DinoDev 2023. 5. 7. 17:39
728x90
반응형
public static void main(String[] args) {
    int a = 3;
    int b = 5;
    System.out.println(String.format("a: %d, b: %d", a, b)); // a: 3, b: 5
}

만약 이렇게 a가 3이고 b가 5인 변수에서 a와 b의 값을 스왑하기 위해서 어떻게 해야 할까요?

temp 변수 사용하기

public static void main(String[] args) {
    int a = 3;
    int b = 5;

    int temp = a;
    a = b;
    b = temp;

    System.out.println(String.format("a: %d, b: %d", a, b)); // a: 5, b: 3
}

보통은 이렇게 temp 변수를 두고

1. temp에 a를 넣는다.

2. a에 b를 넣는다.

3. b에 temp를 넣는다.

이런 식으로 a와 b의 값을 바꿀 것 입니다.

^ 연산자 사용하기

public static void main(String[] args) {
    int a = 3;
    int b = 5;

    a = a ^ b; // 011 ^ 101 = 110
    b = a ^ b; // 110 ^ 101 = 011
    a = a ^ b; // 110 ^ 011 = 101

    System.out.println(String.format("a: %d, b: %d", a, b)); // a: 5, b: 3
}

^(xor) 비트 연산자를 사용하게 되면 temp 변수 없이도 a와 b의 값을 변경할 수 있습니다.

728x90
반응형