본문 바로가기
프로그래밍/Java

++i vs i++

by KHRDev 2022. 5. 18.

개발을 시작할 때 사실 기초적인 지식으로 많이들 배우곤 한다.

 

 전문 용어로는 전위 연산(++i)과 후위 연산(i++)이라고 하는데 내가 쓰고자 하는 글은 전위 연산과 후위 연산의 동작 원리는 아니다. 하지만 이왕 쓰는 김에 전위 연산과 후위 연산의 동작 원리도 같이 한 번 상기해보자..


1. 전위 연산

int a = 1;
int b = ++a;

System.out.println(a);
System.out.println(b);

a, b의 결과 값은 2와 2가 나온다.

동작 원리를 살펴보면 

1. int a = 1;

2. a = a + 1;

3. int b = a;

 가 된다.

 

전위 연산인 ++a의 실제 코드를 풀어주면

a = a + 1;

return a; 가 된다.

2. 후위 연산

int a = 1;
int b = a++;

System.out.println(a);
System.out.println(b);

a, b의 결괏값은 1, 2가 나온다.

동작 원리를 살펴보면

1. int a = 1;

2. int b = 1;

3. a = a + 1;

후위 연산인 a++의 실제 코드를 풀어주면 

int m = a;

a = a + 1;

return m; 이 되기 때문에 후위 연산은 m이라는 메모리가 필요하게 되어 전위 연산이 메모리 낭비가 적다는 얘기가 있다..

 

실제로 코딩을 하다 보면 

// 1번
for(int i = 0; i < 10; i++) {
	...
}

// 2번
for(int i = 0; i < 10; ++i) {
	...
}

2번과 같은 형태로 코딩하시는 분들을 볼 수 있는데... 실제로 결괏값에는 차이가 없다. for문은 loop를 돈 후에 i를 증가시키기 때문에..

예전에는 전위 연산이 메모리 낭비가 적어 반복이 많이 일어나는 로직을 거칠 때 메모리 관리에 유리한 점이 있었다고는 하나 컴파일러가 발전하면서 최적화를 통해 1번과 2번이 같은 코드를 생성하기 때문에 어느 쪽을 쓰느냐는 취향 차이가 될 것이다.

'프로그래밍 > Java' 카테고리의 다른 글

ModelMapper란?  (0) 2023.07.12
[Java] StringTokenizer에 대해 알아보자~  (0) 2022.08.09
String vs (StringBuffer vs StringBuilder)  (0) 2022.06.07
Java에서 문자열 앞뒤 공백 제거  (0) 2022.05.31
Java로 Client IP 찾는 방법  (0) 2022.05.23

댓글