증감연산 (++, --)
자바는 ++, -- 기호를 이용하여 값을 증가하거나 감소시킬 수 있다. 이러한 ++, -- 기호를 증감 연산자라고도 한다.
다음의 예를 보자.
int i = 0;
int j = 10;
i++;
j--;
System.out.println(i); // 1 출력
System.out.println(j); // 9 출력
++는 값을 1만큼 증가시키고 --는 값을 1만큼 감소시킨다는 것을 확인 할 수 있다. 하지만 여기서 잠깐 실수하기 쉬운 것이 있다. 그것은 바로 ++, -- 등의 연산자의 위치이다.
다음의 예제를 보자.
int i = 0;
System.out.println(i++); // 0 출력
System.out.println(i); // 1 출력
System.out.println(i++) 의 출력값은 i가 1만큼 증가되어 1 이 출력되어야 할 것 같지만 0 이 출력되었다. 그렇다면 변수 i의 값이 증가되지 않은것일까? 그 다음 문장인 System.out.println(i) 의 출력값을 확인 해 보니 1이 나온다.
그렇다면 i의 값은 증가된 것이다.
이런 결과가 나오는 원인은 변수 ++ 연산자의 위치 때문이다. 즉 i++ 와 같이
++ 연산자가 변수명 뒤에 붙으면 해당 코드가 실행되는 순간에는 i 값이 변경되지 않는다.
다만 i++ 문장이 실행된 이후에 i값이 증가하게 된다. 이와는 반대로 i++ 대신 ++i라고 사용하게 되면 i 값이 먼저 증가된 후에 해당 코드가 실행된다.
즉, 다음과 같은 차이가 있으니 잊지 말도록 하자.
i++ : 값이 참조된 후에 증가
++i : 값이 참조되기 전에 증가
다음처럼 연산자의 위치를 변경하여 확인 해 보자.
int i = 0;
System.out.println(++i); // 1 출력
System.out.println(i); // 1 출력
++i 에 의해서 i값이 참조되기 전에 증가된 것을 확인 할 수 있다.
-- 연산자도 ++ 연산자와 동일한 규칙을 따른다.
출처: [점프 투 자바]https://wikidocs.net/204
안녕하세요
public static void main(String args[]) {
int num = 5;
처음거는 6이 출력되는걸 알겠는데 result는 왜 5로 출력이 될까요...?