<변수의 값 교환>

다음과 같이 변수 x, y가 있을 때,

int x = 10;
int y = 20;

두 변수에 담긴 값을 서로 바꾸려면 어떻게 해야 할까?

 

 

 

단순하게

x = y;
y = x;

위와 같이 y의 값을 x 변수에 저장하고,

x의 값을 y 변수에 저장하면 된다고 생각할 수 있다.

 

그래서 x 변수에는 20이 저장되고

y 변수에는 10이 저장된다라고.

 

 

 

하지만 결과는 x 변수에도 20이, 

y 변수에도 20이 저장되어 버린다.

 

x = y; 를 실행하면

x 변수에는 y 변수의 값인 20을 저장하고

기존에 저장되어있던 10을 지워버린다.

 

그다음 y = x; 을 실행하면서

x 변수에 새로 저장된 20이 y 변수에 다시 저장된다.

 

 

 

그러면 어떻게 해야할까?

 

변수를 하나더 선언해서

x의 값을 위한 임시 저장소로 사용해야 한다.

 

int x = 10;
int y = 20;
int tmp;

위와 같이 추가로 tmp 변수를 선언하여

아래와 같은 순서로 값을 옮기면 된다.

tmp = x;
x = y ;
y = tmp;

 

 

 

값을 확인하기 위해 

System.out.println();을 이용하여 x와 y 값을 출력해보면

사라지는 값 없이 잘 교환되어 출력된다.

 

 

 

임시 변수의 이름이 꼭 tmp가 아니어도 되지만,

다른 개발자가 봤을 때

변수를 선언한 의중을 해석하기 어려울 수 있으므로

값을 교환하는 목적으로 변수를 만드는 경우,

임시변수라는 뜻의 관용어구로 tmp로 하는 것이 좋다. 

 

 

 

<예제 2-2 VarEx2>

public class P024_VarEx2 {
	public static void main(String[] args) {
		int x = 10;
		int y = 20;
		int tmp = 0;
	
		System.out.println("x:"+ x + " y:" + y);
		
		tmp = x;
		x = y;
		y = tmp;

		System.out.println("x:"+ x + " y:" + y);
	}
}
[실행결과]
x:10 y:20
x:20 y:10