증감 연산자 ++ –
증감 연산자는 피연산자에 저장된 값을 1 증가 또는 감소 시킨다.
증감 연산자의 피연산자로 정수와 실수가 모두 가능하지만, 상수는 값을 변경할 수 없으므로 불가능하다.
피연산자의 값을 변경하는 것은 오직 대입연산자와 증감연산자만 가능하다.
- 증가 연산자 ++ : 피연산자의 값을 1 증가시킨다.
- 감소 연산자 – : 피연산자의 값을 1 감소시킨다,
일반적으로 단항 연산자는 피연산자의 왼쪽에 위치하지만 증감 연산자는 양쪽 모두 가능하다. 피연산자의 왼쪽에 위치하면 ‘전위형(prefix)’ 오른쪽에 위치하면 ‘후위형(postpix)’이라고 한다.
**증감 연산자가 수식이나 메서드 호출에 포함된 경우 전위형일 떄와 후위형일 떄의 결과가 다르다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int i=5, j=0;
j = i++;
System.out.println("j=i++; 실행 후, i=" + i +", j="+ j);
i=5;
j=0;
j = ++i;
System.out.println("j=++i; 실행 후, i=" + i +", j="+ j);
실행 결과
j=i++; 실행 후, i=6, j=5
j=++i; 실행 후, i=6, j=6
- 전위형 : 값이 참조되기 전에 증가 시킨다. ( j = ++i; )
- 후위형 : 값이 참조된 후에 증가 시킨다. ( j = i++; )
하지만 독립적인 하나의 문장으로 쓰인 경우에는 전위형과 후위형의 차이는 없다.그러나 다른 수식에 포함되거나 메서드의 매개변수로 사용된 경우 전위형과 후위형의 결과는 다르다. 다음 예제를 보자.다음은 메서드 호출에 증감연산자가 사용된 예이다.
1
2
3
4
5
6
7
8
9
int i=5, j=5;
System.out.println(i++);
System.out.println(++j);
System.out.println("i = " + i + ", j = " +j);
실행 결과
5
6
i = 6, j = 6
i는 값이 증가되기 전에 참조되므로 println()에게 i에 저장된 값 5를 넘겨주고 나서 i의 값이 증가학 ㅣ때문에 5가 출력되고, j의 경우 j에 저장된 값을 증가 시킨후에 println()에게 넘겨주므로 6이 출력된다. 결과적으로 i,j 모두 6이 된다.
부호 연산자 + -
부호 연산자 ‘-‘는 피연산자의 부호를 반대로 변경한 결과를 반환한다. 부호 연산자 +는 거의 사용할 일이 없다.
부호 연산자는 boolean, char 형을 제외한 기본형에만 사용할 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
int i = -10;
i = +i;
System.out.println(i);
i=-10;
i = -i;
System.out.println(i);
실행결과
-10
10