<변수의 값 교환>
다음과 같이 변수 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
'. Java의 정석' 카테고리의 다른 글
[Java] 데이터 타입의 필요성 (0) | 2021.07.01 |
---|---|
[Java] 변수의 명명규칙, 식별자 명명규칙, 상수 (0) | 2021.07.01 |
[Java] 변수의 사용, System.out.println(); 단축키, 더하기부호(+) (0) | 2021.07.01 |
[Java] 변수의 초기화(할당), 대입연산자(=) (0) | 2021.07.01 |
[Java] 변수 정의, 변수 선언, 세미콜론(;) (0) | 2021.06.30 |