728x90
반응형
단항 연산자 (증감 연산자, 부호 연산자, 비트전환 연산자, 논리부정 연산자) 에 대해 알아본다.
1. 증감 연산자 ( ++, -- )
2. 부호 연산자 ( +, - )
3. 비트전환 연산자 ( ~ )
4. 논리부정 연산자 ( ! )

 

● 연산자는 크게 보면 단항 연산자, 이항 연산자, 삼항 연산자로 나뉘는데, 나뉘는 기준은 연산을 할 때 연산 대상이 되는 피 연산자의 개수가 몇 개냐가 기준이 된다.

따라서 피 연산자가 1개인 경우 단항 연산자, 2개인 경우 이항 연산자, 3개인 경우 삼항 연산자라고 생각하면 된다.

 

● 연산자는 연산을 하는 방향과, 여러 연산자가 같이 있을 때 어느 연산을 먼저 하는가 에 대한 연산 우선순위가 있으므로 아래 표를 참조하도록 하자.

예를 들어 「-2 + 3」이란 수식이 있다면 단항 연산자가 이항 연산자보다 우선순위가 높기 때문에 단항 연산자 중 하나인 부호 연산자가 2에 -1을 곱해 부호를 바꿔 -2를 만들고 그다음 -2와 3을 더하는 연산이 이항 연산자 중 하나인 사칙 연산자에 의해 이루어진다.

다만, 연산 순위가 잘 이해되지 않는다면 괄호를 적절히 사용해서 우선순위를 지정해 주는 것도 하나의 방법이 될 수 있다.

 

분류 연산자 연산방향 연산순위
 단항 연산자  증감 연산자  ++   -- 🡸 1
 부호 연산자  +   - 🡺
 비트전환 연산자  ~ 🡺
 논리부정 연산자  ! 🡺
 이항 연산자

 산술 연산자  나머지 연산자   % 🡺 2
 사칙 연산자 
 *   / 🡺
 +   -   🡺 3
 쉬프트 연산자  <<   >>   >>> 🡺 4
 비교 연산자  대소비교 연산자  <   >   <=   >=  instanceof 🡺 5
 등가비교 연산자  ==   != 🡺 6
 논리 연산자

 비트 연산자

 & 🡺 7
 ^ 🡺 8
 |  🡺 9
 논리 연산자
 && 🡺 10
 || 🡺 11
 그 외 연산자  삼항 연산자  ? : 🡺 12
 대입 연산자 (할당 연산자)  =   *=   /=   %=   +=   -=   <<=   >>=   >>>=   &=   |=   ^= 🡸 13

● 증감 연산자, 부호 연산자, 비트전환 연산자, 논리부정 연산자 단항 연산자로 분류되며 각 연산자의 상세 내용은 아래에서 확인하자.

 

 


※ 증감 연산자는 피 연산자의 값을 1 증가시키거나 1 감소시키는 연산자이며 boolean형을 제외한 모든 기본형 변수에 사용 가능하다.

증가연산자 ++  피연산자의 값을 1증가시킨다.
감소연산자 --  피연산자의 값을 1감소시킨다.

증감 연산자는 피 연산자의 왼쪽(전위형) 또는 오른쪽(후위형)에 사용 가능하다.

전위형 ++i, --i  피 연산자의 값을 먼저 증감한 후에 읽어온다.
후위형 i++, i--  피 연산자값을 먼저 읽어온 후에 값의 증감 처리를 진행한다.

증감 연산자 단독으로 쓰인 경우는 전위형이나 후위형의 결괏값의 차이가 없으나, 증감 연산자가 수식에 사용되거나 함수의 매개변수에 사용될 때는 전위형이냐 후위형이냐에 따라서 연산 순서가 다르기 때문에 결괏값이 다를 수 있다.

int i = 3;
System.out.println(++i); //i의 출력값:4 (i값을 증가시킨후 읽어옴)
System.out.println(i);   //i의 출력값:4

int j = 3;
System.out.println(j++); //j의 출력값:3 (j값을 먼저 읽어서 출력한 후 j값을 증가시킴)
System.out.println(j);   //j의 출력값:4

 

증감 연산자는 수식을 간략화할 수 있고, 적은 명령으로 작업을 수행하기 때문에 연산 수행과정이 빠른 장점이 있다.

예를 들어 「i=i+1」과 「++i」의 결괏값은 값지만 컴파일 후 생성되는 클래스 파일의 바이트코드 명령어를 비교해보면 「i=i+1」의 경우 5개의 명령어가 사용된 반면 「++i」의 경우 2개의 명령어가 사용되어 더 적은 명령으로 작업을 수행한 것을 확인할 수 있다.

 

 


※ 부호 연산자는 피 연산자의 부호를 바꿀 때 사용되는 연산자이며 boolean형, char형을 제외한 모든 기본형 변수에 사용 가능하다.

부호연산자 +  피연산자에 1을 곱한다.
-  피연산자에 -1을 곱한다.
int i = -3;
System.out.println(i); //i의 출력값:-3
i = -i;
System.out.println(i); //i의 출력값:3

※ 부호 연산자는 더하기 빼기와 같이 사칙연산을 하는 산술 연산자와는 다르다.

산술 연산자의 경우 피 연산자가 2개 필요하므로 단항 연산자가 아닌 이항 연산자에 속한다.

 

 


※ 비트전환 연산자는 피 연산자를 2진수로 표현했을 때 0은 1로 1은 0으로 바꾸는 연산자이며, 정수형과 char형에만 사용될 수 있다.

~ 0 0 0 1 0 1 1 0
1 1 1 0 1 0 0 1

 

 


※ 논리부정 연산자는 boolean형 에만 사용 가능하며 true인 경우 false로 false인 경우 true로 변환한다.

반복문이나 조건식에 많이 사용이 되는 연산자 중 하나이다.

boolean result = true;
System.out.println(result);  //출력값:true
System.out.println(!result); //출력값:false

 


글 내용 중 잘못된 부분이 있거나, 첨부하실 내용이 있으시면 댓글로 남겨주세요. 공부하는데 많은 도움이 됩니다.
-- 기억의 유효기간은 생각보다 짧다. --

 

728x90
반응형