본문 바로가기

JAVA

[Snack Java] 5. 자바의 연산자(Operators)

2022.06.02 - [JAVA] - [Snack Java] 4. 자바의 변수(variable), 상수(constant), 리터럴(literal), 형 변환(type casting)

 

[Snack Java] 4. 자바의 변수(variable), 상수(constant), 리터럴(literal), 형 변환(type casting)

2022.05.31 - [JAVA] - [Snack Java] 3. 자바의 문자열 클래스: 심화(StringTokenizer, StringBuilder, StringBuffer) [Snack Java] 3. 자바의 문자열 클래스: 심화(StringTokenizer, StringBuilder, StringBuffer..

yunjuniverse.tistory.com

 

이번 편은 자바의 연산자(Operator)이다. 이전 글에서 할당 연산자인 등호(=)와 동위 비교 연산자인 double equals(==, 해당하는 한국어를 못찾겠다...)가 자주 등장하는 것을 확인할 수 있었다.

 

이렇게 연산을 위한 여러 기호를 연산자(Operator)라고 한다. 연산자는 우리에게 생소한 개념은 아니다. 우리가 평소 사칙 연산을 할 때 쓰는 (+, -, ÷, ×) 도 연산자이다. 다만 자바의 연산자의 생김새는 우리가 평소 알던 연산자와는 약간의 차이가 있으며, 산술연산자 뿐만 아니라 비교, 조건, 부정, 증감 연산자 등 다양한 연산자가 존재한다. 연산자는 그다지 어려운 내용은 아니니 한번에 표로 정리해본다.

 

자바의 연산자 종류

종류 연산자 기능 예시(int) 결과값
산술연산자
(Arithmetic Operators)


수학 연산을 위한 연산자
+ 두 항을 더한다. 7 + 3 10
- 앞에 있는 항에서 뒷 항을 뺀다 7 - 3 4
* 두 항을 곱한다 7 * 3 21
/ 앞에 있는 항에서 뒷 항을 나누어 '몫'을 구한다 7 / 3 2(int의 경우)
% 앞 항에 뒷 항을 나누어 나머지를 구한다. 7 % 3 1
할당연산자
(Assignment Operators)


값 할당을 위한 연산자 할당자 앞에 수학 연산자나 논리 연산자를 붙여 쓸 수 있다
= 앞 항에 뒷 항을 할당한다 int i = 0; 0
+= 앞 항에 앞 항과 뒷 항을 더한 값을 할당한다 i가 2일 때,
int i += 3;
5
-= 앞 항에 앞 항과 뒷 항을 뺀 값을 할당한다. i가 2일 때,
int i -= 3;
-1
/= 앞 항에 앞 항과 뒷 항을 나눈 몫을 할당한다. i가 5일 때,
int i /= 3;
1(int의 경우)
*= 앞 항에 앞 항과 뒷 항을 곱한 값 할당한다. i가 5일 때,
int i *= 3;
15
%= 앞 항에 앞 항과 뒷 항을 나눈 나머지를 할당한다. i가 5일 때,
int i %= 3;
2
증감연산자
(Increment and
Decrement
Operators)


하나의 수를 더하거나 뺀다.
++a 자기 자신이 가진 수에서 1을 더한다. 보통 반복문에서 사용한다. 1을 먼저 증가시킨 뒤 다른 연산을 실행한다 a가 5일 때,
++a * 2
12
a++ 자기 자신이 가진 수에서 1을 뺀다. 보통 반복문에서 사용한다. 다른 연산을 실행한 뒤 1을 증가시킨다 a가 5일 때,
a++ * 2
10
--a 자기 자신이 가진 수에서 1을 뺀다. 보통 반복문에서 사용한다. 1을 먼저 감소시킨 뒤 다른 연산을 실행한다 a가 5일 때,
--a * 2
8
a-- 자기 자신이 가진 수에서 1을 뺀다. 보통 반복문에서 사용한다. 다른 연산을 실행한 뒤 1을 감소시킨다 a가 5일 때,
a-- * 2
10
비교연산자
(Comparison
Operators)


두 항의 크기를 비교한다.
참고로 자바는 이항 비교만 가능하다
a > b a가 b를 초과한다(b 값 미포함) a=1, b= 1 false
a >= b a가 b 이상이다(b값 포함) a=1, b= 1 true
a < b b가 a를 초과한다(a값 미포함) a=1, b= 1 false
a <= b b가 a를 이상이다(a값 미포함) a=1, b= 1 true
a == b a와 b는 동일하다 a=1, b= 1 true
a != b a와 b는 동일하지 않다 a=1, b= 1 false
조건연산자
(Conditional
Operators)


조건식이 true일 때와 false일 때의
결과 값 비교 및 결과 도출
조건식 ?
true : false
조건식에 일치하면 true 선언문을 실행하고 일치하지 않으면 false 선언문을 실행 (a>0) ? "positive" : "negative" a가 4면
"positive"
a가 -2면
"negative"
논리연산자
(Logical Operators)


주어진 논리식을 판단하여,
참(true)과 거짓(false)을 결정하는 연산자
! 논리식의 결과가 참이면 거짓을, 거짓이면 참을 반환함.
(논리 NOT 연산)
A = true;
B = false;
!A → false;
!B → true;
&& 논리식이 모두 참이면 참을 반환함. (논리 AND 연산) A = true;
B = false;
A&&B → false;
|| 논리식 중에서 하나라도 참이면 참을 반환함. (논리 OR 연산) A = true;
B = false;
A||B → true;
비트연산자
(Bitwise Operators)


비트(bit) 단위로 논리 연산을 할 때
사용하는 연산자.
비트 단위로 왼쪽이나 오른쪽으로
전체 비트를 이동하거나,
1의 보수를 만들 때도 사용
& 대응되는 비트가 모두 1이면 1을 반환함. (비트 AND 연산) 1 & 2 0
| 대응되는 비트 중에서 하나라도 1이면 1을 반환함. (비트 OR 연산) 1 | 2 3
^ 대응되는 비트가 서로 다르면 1을 반환함. (비트 XOR 연산) 1 ^ 2 3
~ 비트를 1이면 0으로, 0이면 1로 반전시킴. (비트 NOT 연산, 1의 보수) ~1 -2
<< 명시된 수만큼 비트들을 전부 왼쪽으로 이동시킴. (left shift 연산) 2<<1 4
>> 부호를 유지하면서 지정한 수만큼 비트를 전부 오른쪽으로 이동시킴. (right shift 연산) 1>>1 0
>>> 지정한 수만큼 비트를 전부 오른쪽으로 이동시키며, 새로운 비트는 전부 0이 됨. 3>>>1 1

 

연산자의 우선 순위

순위 연산자 내용
1 (),[] 괄호 / 대괄호
2 !, ~, ++, -- 부정/ 증감 연산자
3 *, /, % 곱셈 / 나눗셈 연산자
4 <, <=, >, >= 대소 비교 연산자
5 && AND 연산자
6 || OR 연산자
7 ? : 조건 연산자
8 =, +=, -=, /=, %= 대입/할당 연산자

 

 

여기 있는 모든걸 다 외울 필요는 없다. 향후에 알고리즘 문제를 풀다보면 지겹게 사용하는 기본적인 개념이라 저절로 외워질 것이다. (다만, 비트 연산자까지 써야하는 경우는 아직 만나보지 못했다....)