구 분 |
연 산 자 |
우 선 순 위 |
우선연산자 |
( ) [ ] . |
가장 높음 |
단항연산자 |
+ - ! ~ ( ) ++ -- |
높음 |
산술연산자 |
+ % / * - |
높음 |
쉬프트연산자 |
<< >> >>> |
높음 |
관계연산자 |
> < >= <= == != |
높음 |
논리연산자 |
& ^ | && || |
낮음 |
삼항연산자 |
? : |
낮음 |
대입연산자 |
= *= /= %= += -= <<= >>= >>== &= ^= != |
낮음 |
1. 시프트 연산자
1-1 << 좌 시프트 연산자
비트를 좌측으로 밀고 난 자리를 0으로 채운다.
2 << 2 ( 2의 비트는 0000 0010) 0000 0010 -> 0000 1000 -> 8 |
1-2 >> 우 시프트 연산자
비트를 우측으로 밀어준다. 밀고 난 자리는 부호비트가 0이면 0을, 1이면 1을 채워준다.
4 >> 2 (4의 비트는 0000 0100) 0000 0100 -> 0000 0001 -> 1 |
1-3 >>> 우 시프트 연산자2
비트를 우측 밀어준다. >> 연산자와 다른점은 부호비트와 상관없이 빈자리를 무조건 0으로 채워준다.
16 >>> 2 ( 4의 비트는 0001 0000) 0001 0000 -> 0000 0100 -> 4 |
2. 관계 연산자
2-1 관계연산자
관계 연산자는 좌측에 있는 변수 혹은 상수를 기준으로 해석하면 이해하기 쉽다.
a >= b : a가 b보다 크거나 같다면
a <= b : a가 b보다 작거나 같다면
a == b : a가 b와 일치한다면
a != b : a가 b와 일치하지 않는다면
|
3. 논리 연산자
3-1 비트논리 연산자(&, |, ^)
A값 |
B값 |
& (and) |
| (or) |
^ (xor) |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
& 연산자 : 두 비트가 모두 1일때만 1
| 연산자 : 두 비트중 하나만 1이어도 1
^ 연산자 : 두 비트가 같은때에는 0, 다를때는 1
3-2 AND결합(&&), OR결합(||) 연산자
&& : 연산식, 혹은 피연산자의 결합이 모두 true여야 true값을 return 한다. - ( 1 && 3>2 ) , ( ((2*3) > (2+3)) && true )
|| : 연산식, 혹은 피연산자의 결합이 둘중 하나만 true여도 true 값을 return 한다. - ( 0 || 1), ( false || true), ( (2 < 3) || (3 > 2) ) |
4. 삼항연산자
4-1 삼항연산자
세개의 피연산자를 필요로 하며, 조건식이 true일때의 return 값, false일때의 return 값으로 분리된다.
이 삼항연산자는 생각보다 많이 쓰이는데 간단한 if문을 삼항연산자 한줄로 대체하여 라인수를 줄일 수 있다.
(조건식) ? 식1 : 식2 - int returnValue = ( 3 < 5 ) ? 10 : 0; : 3이 5보다 작은 값이 맞기때문에 조건식은 true이고 true에 해당하는 10의 값이 return Value 변수에 대입된다. |
5. 대입연산자
5-1 단순대입연산
대입연산자는 변수에 값이나 수식결과를 저장하기위해 사용된다. 대입연산자 좌측에는 저장될 변수가 위치되어야 하고
우측에는 상수, 혹은 수식이 올 수 있다.
int resultInteger = 3;
int returnValue = (3 + 5) * 2; |
5-2 복합대입연산
대입연산자와, 다른연산자를 대입하여 사용하는 연산 표현이다. 아래 예시를 보면 이해하기 쉽다.
result += 3; - result 변수에 result + 3을 수행한후 값을 result에 대입하라는 의미이다. result = result + 3 의 단순대입 연산과 같은 의미이다.
result *= 10 - result 변수에 result * 10을 수행한 값을 result에 대입하라는 의미이다. result = result * 10의 단순대입 연산과 같은 의미이다. |