*본 내용은 [Do it! 자바 프로그래밍 입문] 책과 강의를 보고 공부하면서 요점 정리한 내용입니다.
int age = 24; //age 변수에 24 값 대입
변수나 상수 값을 양수/음수로 만드는 연산자
int num = 10;
System.out.println(-num); //-10이 출력되지만 num변수 자체의 값이 -10이 되는 것은 아님.
+ 더하기
- 빼기
* 곱하기
/ 나누기
% 나머지
※나머지 연산자 (%)
- 숫자 n의 나머지는 0 ~ n-1 범위의 수
- 특정 범위 안의 수를 구할 때 종종 사용
++ 항의 값에 1을 더함
-- 항의 값에서 1을 뺌
※항의 앞/뒤 위치에 따라 연산의 결과가 달라짐에 유의
val = num++; //먼저 num 값에 1 증가한 후 val 변수에 대입
val = num--; //val 번수에 기존 num 값을 먼저 대입한 후 num 값 1 증가
연산의 결과가 true(참) 또는 false(거짓)으로 반환 됨
연산자 | 기능 | 연산 예 |
---|---|---|
> | 왼쪽 항이 크면 참을, 아니면 거짓을 반환합니다. | num > 3; |
< | 왼쪽 항이 작으면 참, 아니면 거짓을 반환합니다. | num < 3; |
>= | 왼쪽 항이 오른쪽 항보다 크거나 같으면 참, 아니면 거짓을 반환합니다. | num >= 3; |
<= | 왼쪽 항이 오른쪽 항보다 작거나 같으면 참, 아니면 거짓을 반환합니다. | num <= 3; |
== | 두 개의 항의 값이 같으면 참, 아니면 거짓을 반환합니다. | num == 3; |
!= | 두 개의 항이 다르면 참, 아니면 거짓을 반환합니다. | num != 3; |
연산의 결과가 true(참) 또는 false(거짓)으로 반환 됨
연산자 | 기능 | 연산 예 |
---|---|---|
&& (논리 곱) | 두 항이 모두 참인 경우에만 결과 값이 참입니다. 그렇지 않은 경우는 거짓입니다. | booleanval = (5 > 3) && (5 > 2); |
|| (논리 합) | 두 항 중 하나의 항만 참이면 결과 값은 참입니다. 두 항이 모두 거짓이면 결과 값은 거짓입니다. | booleanval = (5 > 3) || (5 < 2); |
! (부정) | 단항 연산자입니다. 참인 경우는 거짓으로 바꾸고, 거짓인 경우는 참으로 바꿉니다. | booleanval = !(5 > 3); |
※단락 회로 평가(SCE; Short Circuit Evaluation)
논리 곱(&&)은 두 항이 모두 true 일 때만 결과가 true
→ 앞의 항이 false이면 뒤 항의 결과를 평가하지 않아도 false임
논리합(||)은 두 항이 모두 false 일 때만 결과가 false
→앞의 항이 true이면 뒤 항의 결과를 평가하지 않아도 true임
OperationEx3.java
package operator;
public class OperationEx3 {
public static void main(String[] args) {
int num1 = 10;
int i = 2;
boolean value = ((num1 = num1 + 10) < 10) && ((i = i + 2) <10);
// 논리 곱에서 앞 항의 결과 값이 거짓이므로 ((i = i + 2) <10) 문장은 실행되지 않음
System.out.println(value);
System.out.println(num1);
System.out.println(i);
value = ((num1 = num1 + 10) > 10) || ((i = i + 2) <10);
// 논리 합에서 앞 항의 결과 값이 참이므로 ((i = i + 2) <10) 문장은 실행되지 않음
System.out.println(value);
System.out.println(num1);
System.out.println(i);
}
}
출력화면
false
20
2 //논리 곱에서 앞 항이 거짓이면 뒷 항이 실행되지 않아 i 값은 그대로
true
30
2 //논리 합에서 앞 항이 참이면 뒷 항이 실행되지 않아 i 값은 그대로
연산자 | 기능 | 연산 예 |
---|---|---|
+= | 두 항의 값을 더해서 왼쪽 항에 대입합니다. | num += 2; num1 = num1 + 2;와 같음 |
-= | 왼쪽 항에서 오른쪽 항을 빼서 그 값을 왼쪽 항에 대입합니다. | num -= 2; num1 = num1 - 2;와 같음 |
*= | 두 항의 값을 곱해서 왼쪽 항에 대입합니다. | num = 2; num1 = num1 2;와 같음 |
/= | 왼쪽 항을 오른쪽 항으로 나누어 그 몫을 왼쪽 항에 대입합니다. | num /= 2; num1 = num1 / 2;와 같음 |
%= | 왼쪽 항을 오른쪽 항으로 나누어 그 나머지를 왼쪽 항에 대입합니다. | num %= 2; num1 = num1 % 2;와 같음 |
<<= | 비트를 왼쪽으로 이동하고 그 값을 왼쪽 항에 대입합니다. | num <<= 2; num1 = num1 << 2;와 같음 |
>>= | 비트를 오른쪽으로 이동하고 그 값을 왼쪽 항에 대입합니다.(왼쪽에 채워지는 비트 값은 부호 비트와 동일합니다. | num >>= 2; num1 = num1 >> 2;와 같음 |
>>>= | 비트를 오른쪽으로 이동하고 그 값을 왼쪽 항에 대입합니다.(왼쪽에 채워지는 비트 값은 0입니다. | num >>>= 2; num1 = num1 >>> 2;와 같음 |
&= | 두 항의 & 비트 연산 후 그 값을 왼쪽 항에 대입합니다. | num &= 2; num1 = num1 & 2;와 같음 |
|= | 두 항의 | 비트 연산 후 그 값을 왼쪽 항에 대입합니다. | num |= 2; num1 = num1 | 2;와 같음 |
^= | 두 항의 ^ 비트 연산 후 그 값을 왼쪽 항에 대입합니다. | num ^= 2; num1 = num1 ^ 2;와 같음 |
[ 조건식 ? 결과1 : 결과2; ]
조건식이 참이면 결과1, 거짓이면 결과2가 선택됨.
예시)
int num = (5>3) ? 10: 20; //5는 3보다 크므로 10이 num에 대입됨
비트연산자는 c언어에선 종종 쓰지만 Java에선 많이 쓰진 않는다
비트 연산자는 정수에만 사용할 수 있다
연산자 | 설명 | 예 |
---|---|---|
~ | 비트의 반전 (1의 보수) | a = ~a; |
& | 비트 단위 AND | [1 & 1] 1반환 그 외는 0 |
| | 비트 단위 OR | |
^ | 비트 단위 XOR | 두 개의 비트가 서로 다른 경우에 1을 반환 |
<< | 왼쪽 shift | a << 2 변수 a를 2비트만큼 왼쪽으로 이동 |
>> | 오른쪽 shift | a >> 2 변수 a를 2비트만큼 오른쪽으로 이동 |
>>> | 오른쪽 shift | >> 동일한 연산. 채워지는 비트가 부호와 상관없이 0임 |
(원래 int는 32비트지만 너무 기니까 8비트만 예시로)
& (AND) 연산자: 두 비트가 모두 1인 경우만 1, 아니면 0
| (OR) 연산자: 두 비트가 모두 0인 경우만 0, 아니면 1
^ (XOR) 연산자: 두 비트가 다른 값이면 1, 같은 값이면 0
~ (반전) 연산자: 비트 값을 0은 1로, 1은 0으로 바꾸는 연산자
<< (왼쪽 shift)
비트를 왼쪽에서 오른쪽으로 이동하는 연산자
왼쪽으로 n비트 이동한다는 것은 기존 값이 만큼 곱한다는 뜻이다
>> (오른쪽 shift)
비트를 오른쪽에서 왼쪽으로 이동하는 연산자
오른쪽으로 n비트 이동한다는 것은 기존 값에 만큼 나눈다는 뜻이다
왼쪽에 채워지는 비트 값은 기존 값의 부호 비트와 동일하다
>>>
shift로 비트이동은 동일한데, 남은 공간을 무조건 부호비트가 아닌 0으로 채운다
예시)
15<<2 의 결과가 60이 되었다. 이는 15에 만큼 곱해준 결과와 같다.
우선순위 | 형 | 연산자 | 연산 방향 |
---|---|---|---|
1 | 일차식 | () [] . | → |
2 | 단항 | ! ++ -- + - | ← |
3 | 산술 | % / | → |
4 | 산술 | + - | → |
5 | 비트 이동 | << >> | → |
6 | 관계 | < > <= >= | → |
7 | 관계 | == != | → |
8 | 비트 곱 | & | → |
9 | 비트 차 | ^ | → |
10 | 비트 합 | | | → |
11 | 논리 곱 | && | → |
12 | 논리 합 | || | → |
13 | 조건 | ? : | → |
14 | 대입 | = += -= *= %= /= | ← |