IT/안드로이드+JAVA

[JAVA] 전위 연산자, 후위 연산자, ++, --

안경 쓴 귀니 2017. 6. 14. 16:38
반응형




[연산자] 전위 연산자, 후위 연산자, ++, --







단항 연산자 중에서 증감 연산자 ++, -- 가 있고 변수 앞에 붙이면 전치 증감 연산자(++i,--i)라고 하고 변수 뒤에 붙이면 후위 증감 연산자(i++,i--)라고 한다.


* 전위 증감 연산자는 실행문에서 값이 먼저 증가/감소해서 적용된다.


1. int i = 1;

2. int j = ++i;

j = 2, i = 2 가 된다.



* 후위 증감 연산자는 실행문에서 값이 후에 증가/감소해서 적용된다.


1. int i = 1;

2. int j = i++;

j = 1, i = 2 가 된다.



보통 for문에 자주 사용하고 전위, 후위 연산자 모두 같은 결과를 나타내지만 내부적으로 동작 원리가 다르다.


* 전위 증감 연산자 (++i, --i)

1. i = i + 1;

2. return i;


* 후위 증감 연산자(i++, i--)

1. const int temp = i;

2. i = i + 1;

3. return temp;



전위 증감 연산자는 변수 자체의 값을 1 증가/감소해서 반환하지만 후위 증감 연산자는 다른 변수에 현재 값을 저장하고 변수 값을 1 증가/감소하고 이전에 저장된 값을 반환한다.


보통 for문의 증감식에 증감 연산자를 사용하게 되는데 컴파일러에서 최적화를 하기 때문에 차이가 없을 수도 있지만 최적화를 하지 않을 경우에는 전위 증감 연산자를 사용하면 후위 증감 연산자보다 성능상 이득이 있을 수 있다.


연산자 오버로딩으로 증감 연산자를 만들 경우에 후위 증감 연산자는 클래스를 복사해야되므로 성능이 더 떨어지게 된다.


결론은 증감 연산자를 사용할 때 전위나 후위 모두 사용해도 될 경우에는 전위 증감 연산자를 사용하면 성능상 이득을 볼 수 있다.



[출처 : http://babytiger.tistory.com/entry/%EC%A0%84%EC%9C%84-%ED%9B%84%EC%9C%84-%EC%A6%9D%EA%B0%90-%EC%97%B0%EC%82%B0%EC%9E%90-i-i-%EC%B0%A8%EC%9D%B4]




반응형