저희는 자바에서 식(Expression)이라는 것을 통해서 프로그램을 구현합니다. 수학 시간에 배우는 수식이라고도 생각할 수 있는 이 "식"은 연산자(Operator)와 항(Operand)
으로 구성되어 있습니다.
항(Operand) : 피연산자라고 하며, 식에서 값을 의미합니다.
연산자(Operator) : 항을 이용하여 연산하는 기호를 뜻하고, 이것으로 식의 의미를 결정합니다.
설명한 연산자의 종류에 따라 산술식, 논리식, 관계식 등으로 구분할 수 있습니다.
또한, 항의 개수에 따라 단항, 이항, 삼항 연산자로 나눌 수 있습니다.
그러면 자바에서 사용하는 연산자의 종류에 대해 간단하게 살펴보겠습니다.
대입 연산자는 변수에 값을 대입하는 연산자입니다.
예를 들어, int value = 10
이라는 식에서 =
이 대입 연산자입니다. 의미는 우측에 있는 값을 좌측에 있는 변수에 저장한다
라는 의미입니다.
항을 2개 사용하는 이항 연산자로 우선 순위가 가장 낮은 연산자들입니다.
부호 연산자는 하나의 항을 갖는 단항 연산자로 변수의 부호를 바꾸는 역할을 합니다.
양수로 바꾸고 싶다면 x = +y
, 음수로 바꾸고 싶다면 x = -y
로 작성하면 되며, 변수에 실제로 반영하고 싶다면 =
와 같은 대입 연산자를 사용합니다.
산술 연산자는 2개의 항을 갖는 이항 연산자며, 어떤 값 연산을 나타내는 연산자입니다.
산술 연산자의 종류는 다음과 같습니다.
연산자 | 의미 | 예 |
---|---|---|
+ | 덧셈 | 3 + 2 |
- | 뺄셈 | 3 - 2 |
* | 곱셈 | 3 * 2 |
/ | 나눗셈 | 3 / 2 |
% | 나머지 | 3 % 2 |
나머지 연산자(%)를 제외한 연산자들은 익숙하신 분들이 많을 것 같기 때문에 설명하지 않고 넘어가지만 %
연산자는 생소하신 분들이 계실 것입니다.
%
연산자는 나머지 연산자라고 부르며, 정수형만을 항(피연산자)으로 가집니다. 그리고 이 연산자를 이용하게 되면, 나머지 값을 연산 결과로 갖습니다.
즉, 위의 예에서 3 % 2
를 계산하면, 3을 2로 나눈 나머지를 의미하며, 값은 1
이 반환됩니다.
복합 대입 연산자는 다른 연산자와 대입 연산자와 함께 쓰이는 것을 말합니다.
연산자의 종류가 다양하기 때문에 복합 대입 연산자 또한 종류가 다양합니다.
종류는 +=
, -=
, *=
, /=
, %=
, <<=
, >>=
, >>>=
, &=
, !=
, ~=
가 존재하며, 아직 설명하지 않았지만 비트 연산자 또한 복합 대입 연산자에 포함되어 있습니다.
이 연산자는 우측에 존재하는 첫 번째 항이 좌측의 변수와 같은 경우 반복되는 변수를 줄이고 문장을 간단하게 나타내기 위해 사용됩니다.
예를 들어, value = value + 5
를 간단하게value += 5
로 표현할 수 있습니다.
증감 연산자는 1개의 항을 사용하는 단항 연산자로, 정수형 변수에 앞 또는 뒤에 붙어서 연산하기 전이나 후에 그 변수의 값을 하나 증가시키거나 감소시키는 연산입니다.
연산자 | 의미 | 예 |
---|---|---|
++ | 값을 하나 증가 | ++value(연산 전에 value의 값 증가) |
value++(연산 후에 value의 값 증가) | ||
-- | 값을 하나 감소 | --value(연산 전에 value의 값 감소) |
value--(연산 후에 value의 값 감소) |
예를 들어, int n = ++value
의 경우, value의 값을 먼저 증가시킨 후, 변수 n에 대입한다는 의미이며, int n = value++
의 경우, value의 값을 변수 n에 대입 후, value의 값을 하나 증가시킨다는 의미입니다.
관계 연산자는 2개의 값을 비교하는 이항 연산자로, 이 관계 연산자의 연산 결과는 참(true) 또는 거짓(false)이 됩니다.
연산자 | 의미 | 예 |
---|---|---|
> | 왼쪽 항이 크면 참, 아니면 거짓 | 3 > 2 |
< | 왼쪽 항이 작으면 참, 아니면 거짓 | 3 < 2 |
>= | 왼쪽 항이 크거나 같으면 참, 아니면 거짓 | 3 >= 2 |
<= | 왼쪽 항이 작거나 같으면 참, 아니면 거짓 | 3 <= 2 |
== | 두 개의 항이 같으면 참, 아니면 거짓 | 3 == 2 |
!= | 두 개의 항이 다르면 참, 아니면 거짓 | 3 != 2 |
논리 연산자는 두 개의 값의 논리 관계를 나타내는 연산자로, 관계 연산자와 혼합하여 많이 사용됩니다.
이 연산자 또한 관계 연산자와 마찬가지로 연산 결과는 참(true) 또는 거짓(false)이 됩니다.
연산자 | 의미 | 예 |
---|---|---|
&&(논리곱) | 두 개의 값이 모두 참이면 참, 아니면 거짓 | x && y |
l l(논리합) | 두 개의 값 중 하나의 값만 참이면 참, 두 개의 값이 모두 거짓이면 거짓 | x ll y |
!(부정) | 참인 경우 거짓으로, 거짓인 경우 참으로 변환 | !x |
조건 연산자는 3 개의 항으로 구성된 삼항 연산자로서 의미는 if
문과 같습니다.
연산자 | 의미 | 예 |
---|---|---|
조건식 ? 결과1 : 결과2 | 조건식이 참이면 결과1 아니면 결과2를 선택 | int value = (5 > 3) ? 10 : 20 |
if문을 간단히 표현할 때 사용합니다.
위의 예시에서 if문으로 표현하면 다음과 같습니다.
if(5 > 3) value = 10;
else value = 20;
비트 연산자는 변수 내의 비트들에 접근해서 비트 단위로 연산을 실행하는 연산자입니다.
비트 연산자의 항은 반드시 정수형이여야 합니다.
연산자 | 의미 | 예 |
---|---|---|
~ | 비트의 반전(1의 보수) | ~x |
& | 비트 단위 AND | 1 & 1은 1 반환, 그 외에는 0 |
l | 비트 단위 OR | 0 l 0은 0 반환, 그 외에는 1 |
^ | 비트 단위 XOR | 두 개의 비트가 서로 다르면 1 반환 |
<< | 왼쪽 Shift | a << 2, 변수 a를 2 비트만큼 왼쪽으로 이동 |
>> | 오른쪽 Shift | a >> 2, 변수 a를 2 비트만큼 오른쪽으로 이동 |
>>> | 오른쪽 Shift | >>와 동일한 연산, 채워지는 비트가 부호와 상관없이 0 |
지금까지 간단하게 자바에서 사용하는 연산자들에 대해서 살펴봤습니다.