단항(單홑단 項항목항, unary) 연산자는 하나의 항을 대상으로 연산이 이루어지는 연산자이다. 다음은 자바에서 제공하는 단항 연산자들이다.
| + | 양수를 표현한다. 실제로는 사용할 필요가 없다. |
|---|---|
| - | 음수를 표현한다. |
| ++ | 증가(increment) 연산자로 항의 값을 1씩 증가 시킨다. |
| -- | 감소(Decrement) 연산자 |
// 예제 1)
1 public class PrePostDemo {
2 public static void main(String[] args) {
3 int i = 3;
4 i++;
5 System.out.println(i); // 4 출력
6 ++i;
7 System.out.println(i); // 5 출력
8 System.out.println(++i); // 6 출력
9 System.out.println(i++); // 6 출력
10 System.out.println(i); // 7 출력
}
}
6행은 4행과 다르게 ++가 i 앞에 나왔다. 결과는 5다. ++가 i의 앞에 붙은 것이나 뒤에 붙은 것이나 결과는 같은 것 같다. 하지만 8행의 결과는 6이고, 9행의 결과값도 6이다. 무언가 이상하다.
이런 결과가 나오는 원인은 변수 ++ 연산자의 위치 때문이다. 즉 i++ 와 같이 ++ 연산자가 변수명 뒤에 붙으면 해당 코드가 실행되는 순간에는 i 값이 변경되지 않는다. 다만 i++ 문장이 실행된 이후에 i값이 증가하게 된다. 이와는 반대로 i++ 대신 ++i라고 사용하게 되면 i 값이 먼저 증가된 후에 해당 코드가 실행된다.
즉, 다음과 같은 차이가 있으니 잊지 말도록 하자.
++i : 값이 참조되기 전에 증가i++ : 값이 참조된 후에 증가<aside>
💡 ++i는 i의 값에 1이 더해진 값을 출력하는 것이고, i++는 이것이 속해있는 println에 일단 현재 i의 값을 출력하고, println의 실행이 끝난 후에 i의 값이 증가하는 특성이 있다.
</aside>