연산자 (Operator)
▶ 연산자(Operator)란?
※ operator : 조작(운전)하는 사람, 연산자(수학의 연산자)
- 자바에서는 여러 종류의 연산을 수행하기 위한 다양한 연산자(operator)를 제공하고 있습니다.
- 자바에서 제공하는 대표적인 연산자는 8가지가 있습니다.
1. 산술 연산자(arithmetic operator)
2. 대입 연산자(assignment operator)
3. 증감 연산자(increment and decrement operators)
4. 비교 연산자(comparison operator)
5. 논리 연산자(logical operator)
6. 비트 연산자(bitwise operator)
7. 삼항 연산자(ternary operator)
8. instance of 연산자
▶ 산술 연산자 (arithmetic operator)
- 산술 연산자는 사칙연산을 다루는 연산자로, 가장 기본적이면서도 가장 많이 사용되는 연산자 중 하나입니다.
산술 연산자 | 설명 |
+ | 왼쪽의 피연산자에 오른쪽의 피연산자를 더함 |
- | 왼쪽의 피연산자에서 오른쪽의 피연산자를 뺌 |
* | 왼쪽의 피연산자에 오른쪽의 피연산자를 곱함 |
/ | 왼쪽의 피연산자를 오른쪽의 피연산자로 나눔 |
% | 왼쪽의 피연산자를 오른쪽의 피연산자로 나눈 후, 그 나머지를 반환함 |
- 연산자의 예제
public class Operator {
public static void main(String[] args) {
int num1 = 8, num2 = 4;
System.out.println("+ 연산자에 의한 결과 : " + (num1 + num2)); // 8 + 4
System.out.println("- 연산자에 의한 결과 : " + (num1 - num2)); // 8 - 4
System.out.println("* 연산자에 의한 결과 : " + (num1 * num2)); // 8 * 4
System.out.println("/ 연산자에 의한 결과 : " + (num1 / num2)); // 8 / 4
System.out.println("% 연산자에 의한 결과 : " + (num1 % num2)); // 8 % 4
}
}
---------------------------------------------------------------------------------
출력 결과
+ 연산자에 의한 결과 : 12
- 연산자에 의한 결과 : 4
* 연산자에 의한 결과 : 32
/ 연산자에 의한 결과 : 2
% 연산자에 의한 결과 : 0
▶ 연산자의 우선순위 (operator precedence)와 결합 방향(associativity)
- 연산자의 우선순위는 수식 내에 여러 연산자가 함께 등잘할 때, 어느 연산자가 먼저 처리될 것인가를 결정하는 것 입니다.
- 다른 연산자와 괄호()가 함께 있을 때
i = 3 + 4 * 5; -> 4 * 5부터 연산 후 + 3 순서로 처리됩니다.
i = (3 + 4) * 5; -> (3 + 4)를 먼저 연산 후 * 5 연산하는 순서로 처리하게 됩니다.
- 같은 연산자가 있을 때
3 + 4 - 5; -> 왼쪽에서 오른쪽의 순서로 연산을 하게 됩니다.
a = b = c; -> 오른쪽에서 왼쪽의 순서로 연산을 하게 됩니다.
- 자바 연산자의 우선 순위 표 (우선순위와 결합 방향을 확인할 수 있습니다.)
우선순위 | 연산자 | 설명 | 결합 방향 |
1 | [] | 첨자 연산자 | 왼쪽에서 오른쪽으로 |
. | 멤버 연산자 | 왼쪽에서 오른쪽으로 | |
2 | ++ | 호위 증가 연산자 | 왼쪽에서 오른쪽으로 |
-- | 후위 감소 연산자 | 왼쪽에서 오른쪽으로 | |
3 | ! | 논리 NOT 연산자 | 오른쪽에서 왼쪽으로 |
~ | 비트 NOT 연산자 | 오른쪽에서 왼쪽으로 | |
+ | 양의 부호 (단항 연산자) | 오른쪽에서 왼쪽으로 | |
- | 음의 부호 (단항 연산자) | 오른쪽에서 왼쪽으로 | |
++ | 전위 증가 연산자 | 오른쪽에서 왼쪽으로 | |
-- | 전위 감소 연산자 | 오른쪽에서 왼쪽으로 | |
(타입) | 타입 캐스트 연산자 | 오른쪽에서 왼쪽으로 | |
4 | * | 곱셈 연산자 | 왼쪽에서 오른쪽으로 |
/ | 나눗셈 연산자 | 왼쪽에서 오른쪽으로 | |
% | 나머지 연산자 | 왼쪽에서 오른쪽으로 | |
5 | + | 덧셈 연산자 (이항 연산자) | 왼쪽에서 오른쪽으로 |
- | 뻴셈 연산자 (이항 연산자) | 왼쪽에서 오른쪽으로 | |
6 | << | 비트 왼쪽 시프트 연산자 | 왼쪽에서 오른쪽으로 |
>> | 부호 비트를 확장하면서 비트 오른쪽 시프트 | 왼쪽에서 오른쪽으로 | |
>>> | 부호 비트까지 모두 비트 오른쪽 시프트 | 왼쪽에서 오른쪽으로 | |
7 | < | 관계 연산자 (보다 작은) | 왼쪽에서 오른쪽으로 |
<= | 관계 연산자 (보다 작거나 같은) | 왼쪽에서 오른쪽으로 | |
> | 관계 연산자 (보다 큰) | 왼쪽에서 오른쪽으로 | |
>= | 관계 연산자 (보다 크거나 같은) | 왼쪽에서 오른쪽으로 | |
instanceof | 인스턴스의 실제 타입 반환 | 왼쪽에서 오른쪽으로 | |
8 | == | 관계 연산자 (와 같은) | 왼쪽에서 오른쪽으로 |
!= | 관계 연산자 (와 같지 않은) | 왼쪽에서 오른쪽으로 | |
9 | & | 비트 AND 연산자 | 왼쪽에서 오른쪽으로 |
10 | ^ | 비트 XOR 연산자 | 왼쪽에서 오른쪽으로 |
11 | | | 비트 OR 연산자 | 왼쪽에서 오른쪽으로 |
12 | && | 논리 AND 연산자 | 왼쪽에서 오른쪽으로 |
13 | || | 논리 OR 연산자 | 왼쪽에서 오른쪽으로 |
14 | ?: | 삼항 조건 연산자 | 오른쪽에서 왼쪽으로 |
15 | = | 대입 연산자 및 복합 대입 연산자 (=, +=, -=, *=, /=, %=, >>=, <<=, >>>=, &=, ^=, |=) |
오른쪽에서 왼쪽으로 |
위의 표에서 나온 순서대로 우선순위가 빠른 연산자가 가장 먼저 실행되게 됩니다.
같은 우선순위를 가지는 연산자가 둘 이상 있을 때에는 결합 순서에 따라 실행 순서가 결정됩니다.
'Programing > JAVA' 카테고리의 다른 글
Java Operator (증감 연산자) (0) | 2021.07.19 |
---|---|
Java Operator (대입 연산자) (0) | 2021.07.19 |
JAVA Exercise (1) (0) | 2021.07.16 |
Java Type (타입 변환) (0) | 2021.07.16 |
Java Type (실수의 표현) (0) | 2021.07.16 |