왼쪽 변수 = 오른쪽 변수(또는 식, 값)
변수에 다른 변수나 값을 대입
우선 순위가 가장 낮은 연산자
변수의 부호를 유지 하거나(+) 바꿈(-)
실제 변수의 부호가 변하려면 대입 연산자를 사용해야 함
+ - * / %
연산자 | 기능 | 예 |
---|---|---|
+ | 더하기 | 4+2 → 6 |
- | 빼기 | 4-2 → 2 |
* | 곱하기 | 4* 2 → 8 |
/ | 나누기 몫 | 4/2 → 2 |
% | 나머지 | 4/2 → 0 |
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 |
%= | 나머지를 왼쪽 항에 대입 | num1 %= 2 → num1 = num1 % 2 |
<<= | 왼쪽으로 이동하고 왼쪽 항에 대입 | - |
>> = | 오른쪽으로 이동하고 왼쪽 항에 대입 | - |
>>> = | 오른쪽으로 이동하고 왼쪽 항에 대입 | - |
&= | & 비트 연산 후 왼쪽 항에 대입 | - |
!= | ! 비트 연산 후 왼쪽 항에 대입 | - |
^= | ^ 비트 연산 후 왼쪽 항에 대입 | - |
증가
++
감소--
단항 연산자
변수의 값을 1 더하거나 1 뺄때 사용
연산자가 항의 앞에 있는가 뒤에 있는가에 따라 연산 시점과 결과가 달라짐
문장(statement)의 끝(;)을 기준으로 연산 시점을 생각해야 함
a = ++num // num값 1 증가 후, val 변수에 대입
a = num++ // val 변수에 대입 후, num값 1 증가
a = --num // num값 1 감소 후, val 변수에 대입
a = num-- // val 변수에 대입 후, num값 1 감소
>
<
>=
<=
==
!=
연산자 | 기능 | 예 |
---|---|---|
> | 왼쪽항이 크면 참, 아니면 거짓 | num > 1 |
< | 왼쪽항이 작으면 참, 아니면 거짓 | num < 1 |
>= | 왼쪽항이 크거나 같으면 참, 아니면 거짓 | num >= 1 |
<= | 왼쪽항이 작거나 같으면 참, 아니면 거짓 | num <= 1 |
== | 왼쪽항과 오른쪽항이 같으면 참, 아니면 거짓 | num == 1 |
!= | 두 항이 다르면 참, 아니면 거짓 | num != 1 |
연산의 결과가 true
(참), false
(거짓)으로 반환
조건문, 반복문의 조건식으로 많이 사용
AND
&&
, OR||
, NOT!
연산자 | 기능 |
---|---|
논리곱 AND | 모두 참일 때, 결과 값이 참 |
논리합 OR | 하나의 항만 창이면, 결과 값이 참 |
부정 NOT | 참인 경우 거짓, 거짓인 경우 참 |
관계 연산자와 혼합하여 많이 사용 됨
연산의 결과가 true
(참), false
(거짓)으로 반환 됨
int num1 = 10;
int num2 = 20;
&&
boolean flag = (num1 > 0) && (num2 > 0);
System.out.println(flag); // true
flag = (num1 < 0) && (num2 > 0);
System.out.println(flag); // false
||
flag = (num1 > 0) || (num2 > 0);
System.out.println(flag); // true
flag = (num1 < 0) || (num2 > 0);
System.out.println(flag); // true
!
flag = !(num1 > 0);
System.out.println(flag); // false
false
이면 뒤 항의 결과를 평가하지 않음true
이면 뒤 항의 결과를 평가하지 않음
조건식 > 결과1 : 결과2
연산자 | 기능 |
---|---|
조건식 > 결과1 : 결과2 | 조건식 참이면 결과1, 거짓이면 결과2 |
조건식의 결과가 true(참)인 경우와 false(거짓)인 경우에 따라 다른 결과가 수행됨
if (조건문)을 간단히 표현할 때 사용 할 수 있음
int Score = 80;
System.out.println(Score > 50 ? "합격" : "불합격"); // 합격
~
&
|
^
<<
>>
>>>
연산자 | 기능 | 예 |
---|---|---|
~ | 비트의 반전(1의 보수) | a = ~a; |
& | AND | 1&1 → 1 |
ㅣ | OR | 0 l 0 → 0 |
^ | XOR | 두 비트 서로 다른 경우 1 반환 |
<< | 왼쪽 시프트 | a<<2 |
>> | 오른쪽 시프트 | a>> 2 |
>>> | 오른쪽 시프트 | >> 동일한 연산 채워지는 비트가 부호와 상관 없이 0 |
int num1 = 5; // 00000101
int num2 = 10; // 00001010
System.out.println(num1 | num2); // 15
System.out.println(num1 & num2); // 0
System.out.println(num1 ^ num2); // 15
System.out.println(~num1); // -6
System.out.println(num1 << 2); // 20
System.out.println(num1); // 5
System.out.println(num1 <<= 2); // 20
System.out.println(num1); // 20
마스크 : 특정 비트를 가리고 몇 개의 비트 값만 사용할 때
비트 켜기 : 특정 비트들만을 1로 설정해서 사용하고 싶을 때
ex. & 00001111
하위 4비트 중 1인 비트만 꺼내기
비트 끄기 : 특정 비트들만을 0으로 설정해서 사용하고 싶을 때
ex. | 11110000
하위 4비트 중 0 인 비트만 0으로 만들기
비트 토글 : 모든 비트들을 0은 1로, 1은 0으로 바꾸고 싶을 때