728x90
반응형
SMALL
연산자와 피연산자 구별하기
9 * x + 3
연산자 : 연산을 수행하는 기호 -> * , +
피연산자 : 연산자의 연산 수행 대상 -> 9 , x , 3
*"모든 연산자는 연산결과를 반환한다.
"즉, 연산결과를 반환하지 않으면 연산자가 아니다.ex) () -> 괄호는 연산자가 아니다.
연산자의 종류
종류 연산자 설명
산술 연산자 | + - * / % << >> | 사칙 연산과 나머지 연산(%) |
비교 연산자 | < > >= <= == != | 크고 작음과 같고 다름을 비교 |
논리 연산자 | && | |
대입 연산자 | = | 우변의 값을 좌변에 저장 |
기타 연산자 | (type) ?: instanceof | 형변환 연산자, 삼항 연산자, instanceof연산자 |
연산자의 우선순위
하나의 식에 연산자가 둘 이상 있을 때, 어떤 연산을 먼저 수행 할지를 자동 결정하는 것!= > 5 + 3 * 4
- 1.3 * 4
- 2.5 + 12 연산 순서를 수동으로 결정하고 싶다면 괄호() 를 사용하면 된다.= > (5 + 3) * 4
- 1.5 + 3
- 2.8 * 4
연산자 우선순위 표
우선순위 연산자 설명 결합 방향
1 | [] | 첨자 연산자 | 왼쪽에서 오른쪽으로 |
| . | 멤버 연산자 | 왼쪽에서 오른쪽으로 |
2 | ++ | 후위 증가 연산자 | 왼쪽에서 오른쪽으로 |
| -- | 후위 감소 연산자 | 왼쪽에서 오른쪽으로 |
3 | ! | 논리 NOT 연산자 | 오른쪽에서 왼쪽으로 |
| ~ | 비트 NOT 연산자 | 오른쪽에서 왼쪽으로 |
| + | 양의 부호 (단항 연산자) | 오른쪽에서 왼쪽으로 |
| - | 음의 부호 (단항 연산자) | 오른쪽에서 왼쪽으로 |
| ++ | 전위 증가 연산자 | 오른쪽에서 왼쪽으로 |
| -- | 전위 감소 연산자 | 오른쪽에서 왼쪽으로 |
| (타입) | 타입 캐스트 연산자 | 오른쪽에서 왼쪽으로 |
4 | * | 곱셈 연산자 | 왼쪽에서 오른쪽으로 |
| / | 나눗셈 연산자 | 왼쪽에서 오른쪽으로 |
| % | 나머지 연산자 | 왼쪽에서 오른쪽으로 |
5 | + | 덧셈 연산자 (이항 연산자) | 왼쪽에서 오른쪽으로 |
| - | 뺄셈 연산자 (이항 연산자) | 왼쪽에서 오른쪽으로 |
6 | << | 비트 왼쪽 시프트 연산자 | 왼쪽에서 오른쪽으로 |
| >> | 부호 비트를 확장하면서 비트 오른쪽 시프트 | 왼쪽에서 오른쪽으로 |
| >>> | 부호 비트까지 모두 비트 오른쪽 시프트 | 왼쪽에서 오른쪽으로 |
7 | < | 관계 연산자(보다 작은) | 왼쪽에서 오른쪽으로 |
| <= | 관계 연산자(보다 작거나 같은) | 왼쪽에서 오른쪽으로 |
| > | 관계 연산자(보다 큰) | 왼쪽에서 오른쪽으로 |
| >= | 관계 연산자(보다 크거나 같은) | 왼쪽에서 오른쪽으로 |
| instanceof | 인스턴스의 실제 타입 반환 | 왼쪽에서 오른쪽으로 |
8 | == | 관계 연산자(와 같은) | 왼쪽에서 오른쪽으로 |
| != | 관계 연산자(와 같지 않은) | 왼쪽에서 오른쪽으로 |
9 | & | 비트 AND 연산자 | 왼쪽에서 오른쪽으로 |
10 | ^ | 비트 XOR 연산자 | 왼쪽에서 오른쪽으로 |
11 | 비트 OR 연산자 | ||
12 | && | 논리 AND 연산자 | 왼쪽에서 오른쪽으로 |
13 | |||
14 | ? : | 삼항 조건 연산자 | 오른쪽에서 왼쪽으로 |
15 | = | 대입 연산자 및 복합 대입 연산자 (=, +=, -=, *=, /=, %=, <<=, >>=, >>>=, &=, ^=, | =) |
class Operator1_1 {
public static void main(String[] args) {
int x = 10;
int y = 20;
// + 연산자는 피연산자가 2개인 이항 연산자 임으로 단항 연산자인 -x 의 -가 먼저 실행된다.
System.out.print("-x + 3 = ");
System.out.println(-x + 3); // -10 + 3 = -7
System.out.print("x + 3 * y = ");
System.out.println(x + 3 * y); // 10 + (3 * 20) = 70
System.out.print("x + 3 > y - 2 = ");
System.out.println(x + 3 > y - 2); // false
System.out.print("x + 3 < y - 2 = ");
System.out.println(x + 3 < y - 2); // true
System.out.print("x > 3 && y < 2 = ");
System.out.println(x > 3 && y < 2); // false
int result = x + y * 3;
System.out.println("result = " + result); // 10 + (20 * 3), result = 70
}
}
연산자의 결합규칙
우선순위가 같은 연산자가 있을 때, 어떤 것을 먼저?
= > 3 + 4 - 5 -> (3 + 4) - 5
기본적인 계산 순서는 왼쪽에서 오른쪽
대입과 단항 연산자일 경우 오른쪽에서 왼쪽
1. 산술 > 비교 > 논리 > 대입 : 대입은 제일 마지막에 수행
2. 단항(1) > 이항(2) > 삼항(3) : 단항 연산자의 우선순위가 제일 높음
3. 단항 연산자와 대입 연산자를 제외한 모든 연산의 진행 방향은 왼쪽에서 오른쪽임
728x90
반응형
LIST
'개발 > JAVA' 카테고리의 다른 글
형변환 연산자와 자동 형변환 (0) | 2023.01.18 |
---|---|
증감 연산자와 부호 연산자 (0) | 2023.01.18 |
문자와 문자열 (0) | 2023.01.18 |
기본형과 참조형 (2) | 2023.01.18 |
상수와 리티럴 (0) | 2023.01.18 |