반응형
두 개의 변수에 값을 설정하고 두 개의 변수 값을 변경할 수 있는 방법이 2가지 있습니다.
첫째는 temp 변수를 이용하여 변경하는 방법
둘째는 배타적논리합을 이용해서 변경하는 방법입니다.
1. 정수형 변수 temp를 선언하여 대입하기
- 메모리를 사용하지만, 속도가 빠르다.
int num1 = 10;
int num2 = 8;
int temp;
temp = num1;
num1 = num2;
num2 = temp;
2. xor(배타적 논리합)
- 복호화를 두번 하면 다시 처음 값으로 간다.
int num1 = 10;
int num2 = 8;
num1 ^= num2; //num1 = num1 ^ num2
num2 ^= num1; //num2 = num2 ^ num1
num1 ^= num2; //num1 = num1 ^ num2
1 | 0 | 0 | 0 | |
^ | 1 | 0 | 1 | 0 |
0 | 0 | 1 | 0 | |
^ | 1 | 0 | 0 | 0 |
1 | 0 | 1 | 0 | |
^ | 0 | 0 | 1 | 0 |
1 | 0 | 0 | 0 |
두 가지 방법 예시
public class Swap {
public static void main(String[] args) {
int num1 = 10;
int num2 = 8;
System.out.println("First swap");
int temp;
temp = num1;
num1 = num2;
num2 = temp;
System.out.println("num1 : " + num1);
System.out.println("num2 : " + num2);
System.out.println("Second swap");
num1 ^= num2; //num1 = num1 ^ num2
num2 ^= num1; //num2 = num2 ^ num1
num1 ^= num2; //num1 = num1 ^ num2
System.out.println("num1 : " + num1);
System.out.println("num2 : " + num2);
}
}
실행화면
728x90
반응형