자바
[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 | 대입 | = += -= %= /= | <- |