개발을 시작할 때 사실 기초적인 지식으로 많이들 배우곤 한다.
전문 용어로는 전위 연산(++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 |
댓글