Java Operator (증감 연산자)
▶ 증감 연산자 (increment and decrement operators)
※ increment : 인상, 증가
decrement : 감소, 감량
- 피연산자를 1씩 증가 혹은 감소시킬 때 사용하는 연산자입니다. 이 연산자는 피연산자가 단 하나뿐인 단항 연산자입니다.
증감 연산자 | 설명 |
++x | 먼저 피연산자의 값을 1 증가시킨 후에 해당 연산을 진행함 |
x++ | 먼저 해당 연산을 수행하고 나서, 피연산자의 값을 1 증가시킴 |
--x | 먼저 피연산자의 값을 1 감소시킨 후에 해당 연산을 진행함 |
x-- | 먼저 해당 연산을 수행하고 나서, 피연산자의 값을 1 감소시킴 |
- 예시를 통해 연산자가 어떻게 되는지 확인해보도록 합시다.
public class Operator{
public static void main(String[] args){
int num1 = 7, num2 = 7;
int result1, result2;
result1 = --num1 + 4;
result2 = num2-- + 4;
System.out.println("전위 감소 연산자에 의한 결과 : " + result1 + ", 변수의 값 : " + num1);
System.out.println("후위 감소 연산자에 의한 결과 : " + result2 + ", 변수의 값 : " + num2);
}
}
----------------------------------------------------------------------------------------------------
출력 결과
전위 감소 연산자에 의한 결과 : 10, 변수의 값 : 6
후위 감소 연산자에 의한 결과 : 11, 변수의 값 : 6
위의 예제에 대한 해석
- result1 = --num1 + 4 : --num1로 num1이 6이 된 후에 +4가 되어 결과가 10이 나온 것이며, 그 상태로 num1이 출력되었기 때문에 num1이 6이 출력된 것입니다.
- result2 = num2-- + 4 : num2이 7인 상태에서 +4가 되어 결과는 11이 나온 것이며 그 후에 num2가 -1을 진행하였기에 출력했을 때의 num2는 6이 출력된 것입니다.
▶ 증감 연산자의 연산 순서
- 증감 연산자는 피연자의 어느 쪽에 위치하는가에 따라 연산의 순서가 달라집니다.
- 증감 연산자의 연산 순서에 대한 예제를 보여드리겠습니다.
public class Operator{
public static void main(String[] args){
int x = 10;
int y = x-- + 5 + --x;
System.out.pringln("x: " + x + ", y: " + y);
}
}
---------------------------------------------------------------
출력 결과
x: 8, y: 23
어떠한 순서로 연산이 이루어져서 결과가 나온 것인지 설명을 해드리겠습니다.
1. x-- + 5 가 제일 먼저 이루어 집니다. 10 + 5 가 이루어진 후 --x의 연산이 이루어 지게 됩니다 > x: 9
2. 10 +5 의 연산 후 15 + --x의 연산이 이루어 지게 됩니다.
3. 15 + --x에서는 --x의 연산이 먼저 이루어지기 때문에 x = 9 - 1이 됩니다. > x: 8
4. 그러면 연산의 결과는 15 + 8이 되므로 23이 나오게 되며 23의 값이 y에 결과값에 들어가게 됩니다. > y: 23
y = x-- + 5 + --x;의 순서를 다시한번 정리해 드리겠습니다.
① x-- + 5 = 10 + 5 = 15
② x-- = 10 - 1 - 9
③ --x = 9 - 1 = 8
④ 15 + --x = 15 + 8 = 23
⑤ y = 23
※ x의 값이 처음에 10으로 한번 정해졌기 때문에 이후에 연산에서는 x의 값이 초기화되지 않는 이상은 계속 바뀌게 됩니다. 즉, x--의 연산을 통해 나온 x값을 가지고 --x값을 연산을 하게 됩니다.
'Programing > JAVA' 카테고리의 다른 글
Java Operator (논리 연산자) (0) | 2021.07.19 |
---|---|
Java Operator (비교 연산자) (0) | 2021.07.19 |
Java Operator (대입 연산자) (0) | 2021.07.19 |
Java Operator (산술 연산자) (0) | 2021.07.19 |
JAVA Exercise (1) (0) | 2021.07.16 |