Java에서 증가 연산자는 종종 혼란을 야기할 수 있는데, 특히 전위(++x
)와 후위(x++
) 증가 연산자의 차이가 그렇습니다.
이 문서에서는 몇 가지 예제를 통해 이들의 차이점과 사용 방법을 알아보겠습니다.
public class Test {
public static void main(String[] args) {
int x = 12, y = 3, z = 0;
z = (x++) + (++y);
System.out.print(z);
}
}
이 코드에서 z의 값은 얼마일까요? z = (x++) + (++y) 연산을 분석해 보면:
x++는 후위 증가 연산자입니다. x의 현재 값 12를 사용한 후, x는 13이 됩니다.
++y는 전위 증가 연산자입니다. y는 먼저 1 증가하여 4가 된 후, 그 값을 사용합니다.
- 따라서 z의 계산은 z = 12 + 4, 즉 z의 값은 16입니다.
int x = 0, z = 0;
for (int i = 0; i < 5; i++) {
x++; // 후위 증가 연산자
z += x; // 여기에서 x 값을 사용
}
이 경우, x++는 후위 증가 연산자로, x의 현재 값을 사용한 후 x를 1 증가시킵니다. 그러나 x의 값은 z += x; 실행 후에 증가하므로, 각 반복에서 z에는 증가된 x의 값이 더해집니다.
- 이 코드의 실행 결과, z의 최종 값은 15가 됩니다.
첫 번째 반복: x가 0에서 1로 증가, z += 1 → z = 1
두 번째 반복: x가 1에서 2로 증가, z += 2 → z = 3
세 번째 반복: x가 2에서 3으로 증가, z += 3 → z = 6
네 번째 반복: x가 3에서 4로 증가, z += 4 → z = 10
다섯 번째 반복: x가 4에서 5로 증가, z += 5 → z = 15
따라서, 이 for 루프가 완료된 후 z의 최종 값은 15가 됩니다.
int x = 0, z = 0;
for (int i = 0; i < 5; i++) {
z += (x++); // x의 현재 값을 더한 후 x를 증가시킴
}
이 경우, z += (x++)에서 x의 현재 값을 z에 더하고, 그 후에 x가 증가합니다. 결과적으로 첫 번째 반복에서 z에는 0이 더해지고, 다음 반복에서는 1, 2, 3, 4가 차례로 더해집니다.
- 따라서, 이 코드의 최종 z 값은 10이 됩니다.
첫 번째 반복: x의 현재 값 0을 z에 더하고, 그 후 x는 1로 증가합니다. (z = 0 + 0 → z = 0)
두 번째 반복: x의 현재 값 1을 z에 더하고, 그 후 x는 2로 증가합니다. (z = 0 + 1 → z = 1)
세 번째 반복: x의 현재 값 2를 z에 더하고, 그 후 x는 3으로 증가합니다. (z = 1 + 2 → z = 3)
네 번째 반복: x의 현재 값 3을 z에 더하고, 그 후 x는 4로 증가합니다. (z = 3 + 3 → z = 6)
다섯 번째 반복: x의 현재 값 4를 z에 더하고, 그 후 x는 5로 증가합니다. (z = 6 + 4 → z = 10)
따라서, 이 for 루프가 완료된 후 z의 최종 값은 10이 됩니다.