티스토리 뷰

IT/Java

단항 연산자 (1)

오예봉봉 2020. 4. 12. 21:59

단항 연산자는 하나의 피연산자가 존재한다. 이러한 연산자에는 증감 연산자(++.-- ) , 부호 연산자(+ ,- ) , 논리 부정 연산자( ! ) , 비트 반전 연산자( ~ ) 등이 있다.



증가 ,감산 연산자 

증감 연산자는 변수의 값을 1 증가(++) 시키거나 1 감소(--)시킨다. 증감 연산자가 단독으로 사용될 경우에는 증감 연산자가 피연산자의 앞에 위치 하든(++a) 뒤에 위치 하든 (a++)결과는 같다. 그러나 , 다른 연산자와 혼합되어 있는 경우에 주의 사항은 증감 연산자가 피연산자의 앞쪽에 있는가 뒤쪽에 있는가 에 따라 연산 결과가 틀려지므로 조심 해야 한다.

연산식 

 해설

 ++피연산자

 피연산자 값 선 증가 이후 , 연산 수행

 피연산자++

 선 연산 수행 이후 , 피연산자 값 증가

 --피연산자

 피연산자 값 선 감소 이후 , 연산 수행

 피연산자--

 선 연산 수행 이후 , 피연산자 값 감소



아래 예제를 보자.

사례 1)  int result = a++ + 10 ;
변수 a 와 10 의 덧셈 연산을 먼저 수행한 후 a 의 값을 1 증가 시킨다. 따라서 ,변수 a 의 값이 만약 2라면 result의 값 12 가 먼저 나온 후 a 값이 1 증가 되어 a 값은 3이 된다. 

사례 2) int result = ++a + 10 ;
변수 a의 값이 먼저 1 증가 된 후에 a + 10 의 연산이 이루어 진다. 따라서, 변수a 의 값이 2 일 경우 a 의 값이 먼저 1 이 증가 되어 3이 된 후 덧셈 연산이 수행 되므로 result 값은 13 이 된다. 

사례 3) int result = a-- + 10  ;
변수 a 와 10 의 덧셈 연산을 먼저 수행한 후 a 의 값을 1 감소 시킨다. 따라서 ,변수 a 의 값이 만약 2라면 result의 값 12 가 먼저 나온 후 a 값이 1 감소 되어 a 값은 1이 된다. 

사례 4) int result =  --a + 10 ;

 변수 a의 값이 먼저 1 감소 된 후에 a + 10 의 연산이 이루어 진다. 따라서, 변수a 의 값이 2 일 경우 a 의 값이 먼저 1 이 감소 되어 1이 된 후 덧셈 연산이 수행 되므로 result 값은 11 이 된다. 


부호 연산자

부호 연산자는 양수 , 음수를 의미하는 + , - 를 의미 한다. + , - 는 산술 연산자의 덧셈 , 뺄셈을 의미하기도 한다. 그러나, 부호 연산자는 피연산자가 한 개이고 산술 연산자는 피연산자가 두 개인 이항 연산자이다.
+ 는 피연산자의 부호를 유지하여 주고 - 는 피연산자의 부호를 변경 시킨다.

1. int  a = -100 ;
2. int result 1 = + a ;
3 .int result 2 = - a ;

위 코드에서 2행의 +연산자는 a 의 값의 부호를 그대로 유지 시킨다. 그래서 result 1 에는 음수 -100이 그대로 유지된다. 그러나 3행의 -연산자는 양수는 음수로 , 음수는 양수로 변경을 시키므로 result 2 에는 양수 100 이 저장 된다. 

부호 연산자를 사용할 경우에 가장 주의 해야 할 점은 부호 연산자도 자바 연산의 기본 타입인 int를 사용한다는 것이다. 따라서 int 와 다른 자료형을 사용하면 컴파일 에러가 발생할 수 있다는 것이다.

1. short A = 10 ;
2. short result = -10 ;

위 코드는 컴파일 에러가 나온다. 왜냐하면 2행에서 -부호 연산자를 사용한 결과 타입이 int로 자동 변환 되었기 때문이다. 따라서 2행을 다음과 같이 수정해야 에러가 발생하지 않는다.

int result = -10 ;


'IT > Java' 카테고리의 다른 글

산술 연산자  (0) 2020.04.14
단항 연산자 (2)  (0) 2020.04.13
연산의 순서와 방향  (0) 2020.04.11
자바 연산자  (0) 2020.04.10
타입 변환(형 변환)  (0) 2020.04.08