1+2에서 사용한 연산자 +는 이항(二두이 項항목항, infix operator) 연산자이고, 좌항인 1과 우항인 2를 더해주는 작업을 하고 있다. 단항(單홑단 項항목항, unary) 연산자는 하나의 항을 대상으로 연산이 이루어지는 연산자이다. 다음은 자바에서 제공하는 단항 연산자들이다.
+ | 양수를 표현한다. 실제로는 사용할 필요가 없다. |
- | 음수를 표현한다. |
++ | 증가(increment) 연산자로 항의 값을 1씩 증가 시킨다. |
-- | 감소(Decrement) 연산자 |
아래는 단항 연산자들을 사용한 예제다.
package org.opentutorials.javatutorials.operator;
public class PrePostDemo {
public static void main(String[] args) {
int i = 3;
i++;
System.out.println(i);
++i;
System.out.println(i);
System.out.println(++i);
System.out.println(i++);
System.out.println(i);
}
}
4
5
6
6
7
3행을 보면 i의 값이 3이다. 4행에서 i++를 한 후에 5행에서 출력한 결과는 4가 되었다. ++는 자신과 결합되어 있는 항의 값에 1을 더하는 연산을 한다. 이것은 아래와 의미가 같다. 자주 사용되는 연산이기 때문에 축약된 형태로 지원하는 것이다.
i = i + 1;
6행은 4행과 다르게 ++가 i 앞에 나왔다. 결과는 5다. ++가 i의 앞에 붙은 것이나 뒤에 붙은 것이나 결과는 같은 것 같다. 하지만 8행의 결과는 6이고, 9행의 결과값도 6이다. 무언가 이상하다. ++i는 i의 값에 1이 더해진 값을 출력하는 것이고, i++는 이것이 속해있는 println에 일단 현재 i의 값을 출력하고, println의 실행이 끝난 후에 i의 값이 증가하는 특성이 있다. 중요한 내용은 아니다. 이해가 안되면 일단 넘어가자.