연산자의 정의
상수나 변수 값을 조작할 수 있도록 해주는 것을 연산이라고 하며 어떠한 연산을 할 것인지에 대한 기호로 연산자라는 것을 사용한다
일반적인 산수에서 사용하는 4칙 연산 외에 프로그래밍에서 특별하게 사용하는 연산자도 있다
연산자에는 연산자 우선순위라는 것이 있으며 이러한 연산자 우선순위를 잘 파악해야지만 원하는 결과를 얻어낼 수 있다
연산자의 종류와 우선순위
최우선 연산자 : . [ ] ( )
단항 연산자 : ! ~ +/- ++/-- (cast)
산술 연산자 : + - * / %
시프트 연산자 : << >> >>>
관계 연산자 : > < >= <= == !=
비트 연산자 : & ^ |
논리 연산자 : & | && ||
삼항 연산자 : 조건항 ? 항1 : 항2
배정 대입 연산자 : = += -= *= /= %= <<= >>= ^= &=
후위형 증감 연산자 : ++/--
십진수를 이진수로 변환하는 커맨드 : Integer.toBinaryString
최우선 연산자
. : 메모리에 생성된 객체의 멤버에 접근 등 특정 매개체의 하위의 접근할 때 사용하는 연산자
[ ] : 배열에서 요소에 접근하고자 할 때 사용하는 연산자
( ) : 수식에서 연산의 우선순위를 조정하고자 할 때 사용
단항 연산자
! : true를 false로 false를 true로 바꿔주는 연산자
~ : 숫자의 비트를 0은 1로, 1은 0으로 바꾸는 연산자
+/- : 숫자의 부호를 결정해 주는 연산자
++/-- : 값을 1 증가시키거나 감소시키는 연산자(전위형) a = a+1, a = a-1 대신 쓸 수 있다
(cast) : 값의 타입을 변경할 때 쓰는 연산자
산술 연산자
+ - * / : 일반적인 4칙 연산
% : 나머지를 구하는 연산자
시프트 연산자
<< : 비트를 오른쪽으로 이동시켜주는 연산(부호를 유지시켜준다, 곱하기 효과)
0000 1000 -> 0000 0100
1000 1000 -> 1100 0100
>> : 비트를 좌측으로 이동시켜주는 연산(나누기 효과)
0000 1000 -> 0001 0000
>>> : 비트를 오른쪽으로 이동시켜주는 연산(무조건 0으로 채워진다, 특수한 목적 연산에 사용)
0000 1000 -> 0000 0100
1000 1000 -> 0100 0100
관계 연산자
> : 좌측의 값이 우측보다 크면 true, 작거나 같으면 false
< : 좌측의 값이 우측보다 크면 false, 크거나 같으면 true
>= : 좌측의 값이 우측의 값보다 크거나 같으면 true, 작으면 false
<= : 좌측의 값이 우측의 값보다 작거나 같으면 true, 크면 false
== : 좌측의 값과 우측의 값이 같으면 true, 다르면 false
!= : 좌측의 값과 우측의 값이 다르면 true, 같으면 false
비트 연산자
& : 두 수를 2 진수로 변환한 후 각 자리를 비교하여 둘 다 1일 경우만 1이 되는 연산자
1000 1000 & 0000 1000 = 0000 1000
| : 두 수를 2 진수로 변환한 후 각 자리를 비교하여 둘 중에 하나라도 1이면 1이 되는 연산자
1000 1000 & 0000 1000 = 1000 1000
^ : 두 수를 2 진수로 변환한 후 각 자리를 비교하여 두 비트가 같으면 0, 다르면 1이 되는 연산자
1000 1000 ^ 0000 1000 = 1000 0000
논리 연산자
&& : 연산자를 기준으로 좌측과 우측에 관계 연산자가 있을 경우 두 값이 모두 true이면 true, 하나라도 false이면 false를 반환한다 좌측의 연산 결과 값이 false라면 이후의 연산은 수행하지 않고 false를 반환한다
10 < 4 && 10 > 3 : false, 10 > 3 연산은 수행하지 않는다
& : 기본적인 연산은 &&와 같지만 좌측 연산 결과 값이 false라고 하더라도 이후의 연산을 모두 수행한다
10 < 4 & 10 > 3 false, 10 > 3 연산도 수행한다
|| : 연산자를 기준으로 좌측과 우측에 관계 연산자가 있을 경우 두 값 중 하나라도 true면 true, 둘 다 false라면 false를 반환한다 좌측의 연산 결과 값이 true라면 이후의 연산은 수행하지 않고 true를 반환한다
10 > 3 || 10 < 4 true, 10 < 4 연산은 수행하지 않는다
| : 기본적인 연산은 ||와 같지만 좌측 연산 결과 값이 true라고 하더라도 이후의 연산을 모두 수행한다
3항 연산자
조건항? 항1 : 항2
조건 항의 결과 값이 true면 항1, false면 항2를 반환한다
배정 대입 연산자
a += 2 : a = a + 2
a -= 2 : a = a - 2
a *= 2 : a = a * 2
a /= 2 : a = a / 2
a %= 2 : a = a % 2
a <<= 2 : a = a << 2
a >>= 2 : a = a >> 2
a ^= 2 : a = a ^ 2
a &= 2 : a = a & 2
a != 2 : a = a ! 2
후위형 증강 연산자
-- / ++ : 자기 자신의 값을 하나 증강하거나 감소하는 연산자
기본적으로 전위형 증감 연산자와 같지만 다음과 같은 차이점이 있다
전위형 : ++a, --a 연산 작업을 수행 후 값을 전달한다
후위형 : a++, a-- 값을 전달한 후 연산을 수행한다
int b = a++ : a 값을 b에 넣은 후 a 값을 증가
int b = ++a : a 값을 증가한 후 b에 넣어준다