자바

[JAVA] 여러 가지 연산자

코딩하는둥이 2022. 11. 12. 19:47

항과 연산자

 - 항(operand): 연산에 사용되는 값

 - 연산자(operator) : 항을 이용하여 연산하는 문자

 

항의 개수에 따른 연산자 구분

연산자 설명 연산 예
단항 연산자 항이 한 개인 연산자 ++num
이항 연산자 항이 두개인 연산자 num1 +num2;
삼항 연산자 항이 세 개인 연산자 (5>3) ? 1: 0;

 

부호 연산자

 - 단항 연산자

  - 양수/ 음수의 표현, 값의 부호를 변경

  - 변수에 +, - 사용한다고 해서 변수의 값이 변하는 것이 아님

  - 변수의 값을 변경하려면 대입 연산자 사용

     ex) num =-num;

연산자 기능 연산 예
+ 변수나 상수 값을 양수로 만듦  +3
- 변수나 상수 값을 음수로 만듦 -3

 

산술 연산자

 -  사칙연산에 사용되는 연산자

 - % 나머지를 구하는 연산자

    숫자 n의 나머지는 0-n-1 범위의 수

     특정 범위 안의 수를 구할 때 종종 사용

연산자 기능 연산 예
+ 두 항을 더함 5+3
- 앞에 있는 항에서 뒤에 있는 항을 뺌 5-3
* 두 항을 곱함 5*3
/ 앞에 있는 항에서 위에 있는 항을 나누어 몫을 구함 5/3
% 앞에 있는 항에서 있는 항을 나누어 나머지 구함 5%3

 

논리 연산자

 - 관계 연산자와 혼합하여 많이 사용됨

 - 연산의 결과 가 참, 거짓으로 반환됨

연산자 기능 연산 예
&&(논리 곱) 두 항이 모두 참인 경우에만 결과 값이 참
그렇지 않은 경우는 거짓
booleanval = (5>3)&&(5>2);
||(논리 합) 두 항 중 하나의 항만 참이면 결과 값은 참
두 항이 모두 거짓이면 결과 값은 거짓
booleanval = (5>3)||(5<2);
!(부정) 단항 연산자
참인 경우는 거짓으로 바꾸고, 거짓은 경우는 참으로 바꿈
booleanval = !(5>3);

 

복합 대입 연산자

 - 대입 연산자와 다른 연산자를 함께 사용함

 - 프로그램에서 자주 사용하는 연산자

연산자 기능 연산 예
+= 두항의 값을 더해서 왼쪽 항에 대입 num1 +=2;
num1 = num1 + 2;와 같음
-= 왼쪽 항에서 오른족 항을 빼서 그 값을 왼쪽 항에 대입 num1 -=2;
num1 = num1 - 2;와 같음
*= 두 항의 값의 곱해서 왼쪽 항에 대입 num1 *=2;
num1 = num1 * 2;와 같음
/= 왼족 항을 오른쪽 항으로 나누어 그 몫을 왼쪽 항에 대입 num1 /=2;
num1 = num1 / 2;와 같음
%= 왼쪽 항을 오른쪽 항으로 나누어 그 나머지를 왼쪽에 대입  num1 %=2;
num1 = num1 % 2;와 같음

 

조선 연산자 

 - 삼항 연산자

 - 조건 식의 결과가 참인 경우와 거짓인 경우에 따라 다른 식이나 결과가 수행됨

 - 제어문 중 조건물을 간단히 표현할 때 사용할 수 있음

연산자 기능 연산 예
조선식 ? 결과1: 결과 2; 조건식이 참이면 결과1,
조건식이 거짓이면 결과 2가 선택
int num = (5>3) ? 10:20;

 

비트연산자

 비트연산자는 정수에만 사용할 수 있음

연산자 설명
~ 비트의 반전 (1의 보수)
비트 값이 0은 1로 / 1은 0으로 바꾸는 연산자
a = ~a;
& 비트 단위 AND
두 비트가 모두 1인 경우만 1 아니면 0
1 & 1   1반환 그 외는 0 
| 비트 단위 OR
두 비트가 모두 0인 경우만 0 아니면 1
0 | 0     0반환 그 외는 1   
^ 비트 단위 XOR
두 비트가 다름 값이면 1, 같은 값이면 0
두개의 비트가 서로 다른 경우에 1을 반환
<< 왼쪽 shift
비트를 오른쪽에서 왼쪽으로 이동하는 연산자
a << 2 변수 a를 2비트 만큼 왼쪽으로 이동
>> 오른쪽 shift
비트를 왼쪽에서 오른쫏으로 이동하는 연산자
a >> 2 변수 a를 2비트만큼 오른쪽으로 이동
>>> 오른쪽 shift
shift로 비트이동은 동일한데. 남은 공간을 모조건 부호비트가 아닌 0으로 채움

>> 동일한 연산
채워지는 비트가 부호와 상관 없이 0임
<<< 왼쪽 shift
shift로 비트이동은 동일한데. 남은 공간을 모조건 부호비트가 아닌 0으로 채움
<< 동일한 연산
채워지는 비트가 부호와 상관 없이 0임

 

복합 대입 연산자

연산자 설명
<<= 비트를 왼쪽으로 이동하고 그 값을 왼쪽 항에 대입 num1 <<=2 ;
num1 = num1 <<2;와 같음
>>= 비트를 오른족으로 이동하고 그 값을 왼쪽 항에 대입
(왼쪽에 채워지는 비트 값은 부로 비트와 동일) 
num1 >>=2 ;
num1 = num1 >>2;와 같음
>>>= 비트를 오른족으로 이동하고 그 값을 왼쪽 항에 대입
(왼쪽에 채워지는 비트 값은 0)
num1 >>>=2 ;
num1 = num1 >>> 2;와 같음
&= 두 항의 & 비트 연산 후 그 값을 왼쪽 항에 대입 num1 &= num2 ;
num1 = num1 & num2;와 같음
|= 두 항의 | 비트 연산 후 그 값을 왼쪽 항에 대입 num1 |= num2 ;
num1 = num1 | num2;와 같음
^= 두 항의 ^ 비트 연산 후 그 값을 왼쪽 항에 대입 num1 ^= num2 ;
num1 = num1 ^ num2;와 같음

 

연산자 우선순위

우선순위 연산자 연산 방향
1 일차식 () [] . ->
2 단항 ! ++ -- + - <-
3 산술 % / ->
4 산술 + - ->
5 비트 이동 << >> ->
6 관계 <> <= >= ->
7 관계 == != ->
8 비트 곱 & ->
9 비트 차 ^ ->
10 비트 합 | ->
11 논리 곱 && ->
12 논리 합 || ->
13 조건  ?: ->
14 대입 = += -= %= /= <-