연산자란, 하나의 값 또는 여러 개의 값을 피연산자로 하여 새로운 값을 만들어내는 기호를 의미한다.
산술 연산자는 사칙연산에 사용되는 연산자 (+
,-
,*
,/
)와 나머지 연산자(%
)를 포함한다.
산술 연산자의 동작은 일반적인 수학 연산과 거의 동일하다.
연산자 | 기능 | 예시(int) | 결과값 |
---|---|---|---|
+ | 두 항의 값을 더한 값을 반환한다. | 7 + 3 | 10 |
(덧셈 연산자) | |||
- | 좌항의 값에서 우항 값을 뺀 값을 반환한다. | 7 - 3 | 4 |
(뺄셈 연산자) | |||
* | 두 항의 값을 곱한 값을 반환한다. | 7 * 3 | 21 |
(곱셈 연산자) | |||
/ | 좌항을 우항으로 나눈 값을 반환한다. | 7 / 3 | 2 |
(나눗셈 연산자) | |||
% | 좌항의 값을 우항의 값으로 나눈 나머지를 반환한다. | 7 % 3 | 1 |
(나머지 연산자 | |||
또는 모듈로 연산자) |
예시
int num1 = 1;
int num2 = num1 + 2; // num2 -> 3
int num3 = num2 - 1; // num3 -> 2
int num4 = num3 * 3; // num4 -> 9
int num5 = num4 / 2; // num5 -> 4
int num6 = num5 % 3; // num6 -> 1
나눗셈 연산자와 나머지 연산자를 사용할 때에 우항에 0이 위치할 수 없다.
예시
int num1 = 9 / 0; // 에러
double num2 = 9.0 / 0; // Infinity
int num3 = 9 % 0; // 에러
double num4 = 9.0 % 0; // 에러
좌항이나 우항 중 하나라도 실수 타입의 값이 존재한다면, 실수 타입이 아닌 값도 자동으로 형변환되어 계산되며, 결과적으로 실수 간의 나눗셈 연산이 되어 소수점이 버려지지 않은 온전한 값으로 반환된다.
예시
double num1 = 9 / 2; // 4.0
int num2 = 9 / 2; // 4
double num3 = 9.0 / 2; // 4.5
예시
num1 = num1 + 1; // num1의 값은 2가 된다.
num2 = num2 - 1; // num2의 값은 0이 된다.
예시
num1++; // num1 = num1 + 1;과 같다.
++num1; // num1 = num1 + 1;과 같다.
num2--; // num2 = num2 - 1;과 같다.
--num2; // num2 = num2 - 1;과 같다.
증감연산자가 피연산자보다 앞에 있으면 전위형 증감연산자, 뒤에 있으면 후위형 증감연산자라고 한다
예제
int num1 = 1;
int prefix = ++num1;
int num2 = 1;
int postfix = num2++;
num1
& prefix
: num1
에 전위형 증감연산자 ++
를 사용했으므로, num1
의 값이 1만큼 먼저 증가된 다음 그 결과값이 prefix
에 할당된다.num1
의 값은 2, prefix
의 값도 2가 된다.num2
& postfix
: num2
에 후위형 증감연산자 ++
를 사용했으므로, num2
의 값이 먼저 postfix
에 할당된 다음에 num2
의 값이 1 증가한다.num2
의 값은 2, postfix
의 값은 1이 된다.예시
num1 = num1++;
num2 = num2--;
증감연산자에서 사용한 예시는 1씩 증가시키거나 감소시킬 때 사용할 수 있다.
하지만 2 혹은 3씩 증가시키거나 감소시키고 싶을 때 증감 연산자를 사용할 수 없다.
예시
num1 = num1 + 2;
num2 = num2 - 2;
이렇게 바꿔쓸 수 있음
예시 num1 += 2; num2 -= 2;
모든 사칙 연산자 및 나머지 연산자와 대입 연산자를 결합해서 복합 대입 연산자로 사용할 수 있다.
예시
// num1~5의 값을 모두 10이라고 한다면,
num1 += 3; // num1 -> 13
num2 -= 3; // num2 -> 7
num3 *= 3; // num3 -> 30
num4 /= 3; // num4 -> 3
num5 %= 3; // num5 -> 1
비교 연산자는 boolean
타입으로 평가될 수 있는 조건시겡 사용되며, 크게 대소 비교(>
,<
,<=
,>=
) 연산자와 등가비교 (==
,!=
) 연산자로 분류된다.
대소 비교 연산자는 boolean
을 제외한 나머지 기본 타입에 모두 사용할 수 있다.
대소 비교 연산자 | 결과 |
---|---|
5 > 3 | true |
5 <= 5 | true |
3 > 2 | true |
2 >= 3 | false |
x
가 1보다 크고 5보다 작다를 표현할 때,1 < x < 5
가 아닌,1 < x && x < 5
와 같이 논리 연산자를 사용해 작성해야한다.
등가 비교 연산자는 모든 타입에 사용할 수 있는 연산자로, 두 항의 값이 동등한지의 여부를 판단할 때 사용한다.
등가 비교 연산자 | 결과 |
---|---|
5 == 3 | false |
5 == 5 | true |
3 !=2 | true |
3 !=3 | false |
논리 연산자는 AND 연산자 &&
, OR 연산자 ||
, NOT 연산자 !
를 포함하며, 공통적으로 boolean
타입을 반환한다.
AND 연산자(&&
) : 피연산자 두 개가 모두 true
일 때 true
를 반환, 피연산자 두 개 중 하나라도 false
면 false
를 반환한다.
OR 연산자(||
) : 피연산자 두 개 중 단 하나라도 true
면 true
를 반환한다. 모두 false
일 경우면 false
를 반환한다.
NOT 연산자(
!
)는true
와false
를 반대로 바꾸는 연산자이다.예시 // 아래의 비교 연산 결과는 모두 true다. !true == false !false == true !!true == true
우선순위 | 연산자 | 내용 |
---|---|---|
1 | (),[] | 괄호/대괄호 |
2 | !,~,++,-- | 부정/증감 연산자 |
3 | *, /, % | 곱셈 / 나눗셈 연산자 |
4 | <, <=, >, >= | 대소 비교 연산자 |
5 | && | AND 연산자 |
6 | || | OR 연산자 |
7 | ? : | 조건 연산자 |
8 | =, +=, -=, /=, %= | 대입/할당 연산자 |
일반적인 수학 우선순위 규칙과 비슷하다.