프로그래밍/JAVA

[JAVA] 연산자(Operator)

으노로 2020. 6. 12. 04:42

안녕하세요.

이번에는 연산자에 대해 공부해보겠습니다.

 

변수에 값을 담고 그 값들을 계산하기 위해서는 연산자가 필요합니다.

기본적인 사칙 연산자부터 논리 연산자, 대입 연산자 등 여러 가지가 있습니다.

자바에서 연산을 할 때 연산자 별로 우선시하는 순서가 있습니다.

표에서 보이는 것처럼 직접 접근 연산자라고 하는 괄호가 가장 우선시 되고 그다음은 단항 연산자입니다.

단항 연산자에는 부호 연산자(+, -)와 논리 부정 연산자(!), 증감 연산자(++, --)가 있습니다.

부호 연산자(+, -)는 연산되는 값(피연산자)의 부호를 나타내는 연산자입니다.

논리 부정 연산자(!)는 논리 값을 부정하는 연산자입니다.

예를 들어 true값을 false값(!true = false)으로 false값을 true값(!false = true)으로 바꿀 때 사용합니다.

증감 연산자(++, --)는 피연산자의 값에 1을 더하거나 빼는 연산자인데 연산자의 위치에 따라 실행되는 순서가 다릅니다.

증감 연산자가 피연산자의 앞에 오는 경우는 전위 연산이라 하고 증감을 한 뒤에 다른 연산을 실행합니다.

반대로 증감 연산자가 피연산자의 뒤에 오는 경우는 후위 연산이라 하고 다른 연산을 한 뒤에 증감을 실행합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 부호 연산자
int a = +10;
int b = -20;
 
// 논리 부정 연산자
boolean b1 = true;
boolean b2 = false;
!b1;                    // false
!b2;                    // true
 
// 증감 연산자
// 전위 연산
++a;                    // 11로 증가한 뒤 다른 연산을 실행한다.
__a;                    // 9로 감소한 뒤 다른 연산을 실행한다.
// 후위 연산
b++;                    // 다른 연산을 실행한 뒤 1을 증가시킨다.
b__;                    // 다른 연산을 실행한 뒤 1을 감소시킨다.

 

세 번째로 우선시되는 연산자는 이항 연산자입니다.
이항 연산자에는  산술, 비교, 논리 연산자가 있습니다.
산술 연산자는 사칙연산과 같이 더하기(+), 빼기(-), 곱하기(*), 나누기(/)가 있고
추가로 나머지(%)를 구하는 연산자가 있습니다.


비교 연산자는 값의 일치 여부와 크기를 비교하는 연산자로써 연산의 결과는 논리 값이 나오게 됩니다.
값이 같은지(==) 다른지(!=)를 비교하는 경우에는 모든 자료형에서 사용 가능하고
크기를 비교하는 경우(<, >, <=, >=)에는 논리 자료형(boolean)과 참조 자료형을 제외한 자료형에서 사용 가능합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// 산술 연산자
int a = 10;
int b = 3;
+ b;            // 10 + 3 = 13
- b;            // 10 - 3 = 7
* b;            // 10 * 3 = 30
/ b;            // 10 / 3 = 3
a % b;            // 10 % 3 = 1
 
// 비교 연산자
int a = 10;
int b = 20;
int c = 30;
// 값의 일치 여부 비교
== b;            // false
!= b;            // true
(a + b) == c;    // true
(c - b) != a;    // false
// 값의 크기 비교
> b;            // false
< c;            // true
(a + b) >= c;    // true
(c - b) <= a;     // true

논리 연산자는 논리 값을 비교하는 연산자로써 AND비교(&&)와 OR비교(||)가 있습니다.
AND비교(&&)는 피연산자가 모두 true일 때 true를 반환하고 하나라도 false가 있으면 false를 반환합니다.
OR비교(||)는 피연산자가 모두 false일 때 false를 반환하고 하나라도 true가 있으면 true를 반환합니다.

A B A && B A || B
true true true true
true false false true
false true false true
false false false false


네 번째로 우선시 되는 연산자는 삼항 연산자입니다.
삼항 연산자는 조건식의 결과에 따라 연산을 처리하는 방식으로써
조건식의 결과가 참일 경우에는 식1을 수행하고 거짓일 경우에는 식2을 수행합니다.

삼항 연산자 안에 삼항 연산자를 넣어서 중첩되어 연산도 가능합니다.

1
2
3
4
5
6
7
8
9
10
11
// 삼항 연산자
// 표현식 = 조건식 ? 식1 : 식2;
int a = 10;
int b = 20;
int num1;

// 조건식이 참이기 때문에 식1(a + 10)을 실행
num1 = b > a ? a + 10 : b - 10;

// 첫번째 조건식이 거짓이기 때문에 중접 조건식을 실행
int num2 = a > b ? a + 10 : (b == 20 ? b - 10 : b + 10);

 

 

다섯 번째로 우선시 되는 연산자는 대입 연산자입니다.

대입 연산자는 순수 대입 연산자와 복합 대입 연산자가 있습니다.

순수 대입 연산자는 변수를 초기화하듯이 바로 값을 대입하는 연산자입니다.

복합 대입 연산자는 다른 연산자와 대입 연산자가 결합한 것으로 자기 자신과 연산한 후에

그 결과를 자기 자신에게 대입하는 것입니다.

1
2
3
4
5
6
7
8
9
10
11
12
// 대입 연산자
int a = 5;
 
// 순수 대입 연산자
= 10;
 
// 복합 대입 연산자
+= 10;    // a = a + 10;
-= 10;    // a = a - 10;
*= 10;    // a = a * 10;
/= 10;    // a = a / 10;
%= 10;    // a = a % 10;

이와 같은 순서로 우선시 되어 연산하며 만약 같은 우선순위의 연산자들의 경우에는 순서대로 계산됩니다.

종합적인 연산자의 우선순위를 정리해보겠습니다.

1.최우선 연산자([], ())

2.단항 연산자(!, ++, --)

3.산술 연산자(+, -, *, /, %)

4.쉬프트 연산자(>>, <<)

5.관계 연산자(>, <, ,>=, <=, ==, !=)

6.비트 연산자(&, ^, |)

7.논리 연산자(&&, ||)

8.삼항 연산자(조건식 ? 식1 : 식2;)

9.대입 연산자(=, +=, -=, *=, /=, %=, >>=, <<=, &=, ^=, |=)

10.나열 연산자(,)

이상으로 연산자에 대해서 공부했습니다.

수고하셨습니다. 그럼 다음 글에서 봬요.