Java에서 ++ 앞과 ++ 뒤: 증가 연산자
Source: Dev.to
소개
++ 연산자는 단순히 더하기만 하는 것이 아닙니다. Java에서는 전위 증가와 후위 증가가 코드가 반환하는 값뿐만 아니라 저장되는 값도 바꿀 수 있습니다. 증분이 표현식 안에서 일어나거나 인덱스 혹은 메서드에 값을 전달할 때 문제가 발생합니다. 겉보기엔 사소해 보이지만, 언제 값이 증가하고 언제 사용되는지를 혼동하면 루프 로직이나 메서드 호출이 깨질 수 있습니다.
- 전위 증가 (
++x): 값을 증가시키고 새로운 값을 반환합니다. - 후위 증가 (
x++): 현재 값을 반환한 뒤에 값을 증가시킵니다.
루프나 메서드 호출에서 어느 것을 선택하느냐에 따라 동작이 달라집니다. 다음 연산에 이미 증가된 값이 필요하면 ++x를 사용하고, 증가하기 전의 값이 필요하면 x++를 사용하세요.
예시
public class IncrementDemo {
public static void main(String[] args) {
int a = 1, b = ++a; // a=2, b=2
int c = 1, d = c++; // c=2, d=1
System.out.println(a + " " + b + " | " + c + " " + d);
}
}
이러한 차이는 인덱스 연산이나 메서드에 값을 전달할 때 자주 나타납니다. 잘못 사용하면 루프 조건이 한 번 더 만족되거나, 요소가 잘못된 인덱스로 처리될 수 있습니다.
권장 조치
- 코드베이스에서
x++를 사용해 다음 연산이나 인덱스에 값을 전달하는 부분을 최소 두 군데 찾아보세요. - 즉시 증가된 값을 사용해야 하는 경우 해당 부분을
++x로 교체하세요. - 두 변형의 동작을 비교하는 작은 테스트를 추가하세요.
- 테스트가 없다면, 카운터나 인덱스 시나리오에서 전위와 후위 증가의 차이를 명시적으로 검증하는 단위 테스트를 작성하세요.