단항 연산자는 피연산자가 하나뿐인 연산자를 말하며, 여기에는 부호연산자 (+,-), 증감 연산자(++,--), 논리 부정 연산자 (!), 비트 반전 연산자 (~)가 있다.
부호 연산자는 양수 및 음수를 표시하는 +,-를 말한다. boolean 타입과 char 타입을 제외한 나머지 기본 타입에 사용할 수 있다.
+,-는 산술 연산자이기도 하고, 부호 연산자이기도 하다.
부호 연산자로 쓰일 때에는 하나의 피연산자만 필요하다.
일반적으로 부호 연산자를 정수 및 실수 리터럴 앞에 붙여 양수 및 음수를 표현한다.
부호 연산자를 정수 또는 실수 타입 변수 앞에 붙일 수도 있다.
이 경우는 변수를 양수 및 음수로 표현한 것이 아니고, 변수 값의 부호를 유지하거나 바꾸기 위해 사용된다. + 연산자는 변수 값의 부호를 유지한다. - 연산자는 변수 값의 부호를 양수는 음수로, 음수는 양수로 바꾼다.
부호 연산자를 사용할 때 주의할 점은 부호 연산자의 산출 타입은 int 타입이 된다는 것이다.
ex) short x = 10;
short result = -x; (컴파일 에러)
int result = -x; (int 타입으로 변경해야함 )
증감 연산자는 변수의 값을 1증가(++) 시키거나 1 감소(--)시키는 연산자를 말한다.
boolean 타입을 제외한 모든 기본 타입의 피연산자에 사용할 수 있다.
연산식에서 증감 연산자만 있는 경우에는 증감 연산자가 변수 앞 또는 뒤 어디든 위치해도 상관없다.
하지만 다른 연산자와 함께 사용하는 연산식에서는 증감 연산자의 위치에 따라 연산식의 결과가 다르게 나오므로 주의해야 한다.
( 전위 : 출력 전에 연산 / 후위 : 출력 후에 연산)
ex) int x = 1;
int y = 1;
int result1 = ++x + 10;
int result2 = y++ + 10;
(->int result2 = y + 10; y++;)
-> result1 = 12 / result2 = 11
boolean 타입에만 사용 가능
논리 부정 연산자는 조건문과 제어문에서 사용되어 조건식의 값을 부정하도록 해서 실행 흐름을 제어할 때 주로 사용된다. 또한 두 가지 상태 (true/false)를 번갈아가며 변경하는 토글 (toggle) 기능을 구현할 때도 주로 사용된다.
정수 타입 (byte, short, int, long)의 피연산자에만 사용되며, 피연산자를 2진수로 표현했을 때 비트값인 0을 1로, 1은 0으로 반전한다. 연산 후 부호 비트인 최상위 비트를 포함해서 모든 비트가 반전되기 때문에, 부호가 반대인 새로운 값이 산출된다.
비트 반전 연산자 산출 타입 = int
(반드시 연산 수행 전 타입 변경하기)
비트 반전 연산자의 결과를 이용하면 부호가 반대인 정수를 구할 수도 있다.
물론 간단하게 부호 연산자를 이용해도 되지만, 비트 반전 연산자의 산출값에 1을 더하면 부호가 반대인 정수 출력 가능