늦은 프로그래밍 이야기
연산자의 우선순위와 결합방향 본문
우선순위표
| 우선순위 | 연산자 | 설명 | 결합 방향 |
| 1 | [] | 첨자 연산자 | 왼쪽에서 오른쪽으로 |
| . | 멤버 연산자 | ||
| 2 | ++ | 후위 증가 연산자 | 왼쪽에서 오른쪽으로 |
| -- | 후위 감소 연산자 | ||
| 3 | ! | 논리 NOT 연산자 | 오른쪽에서 왼쪽으로 |
| ~ | 비트 NOT 연산자 | ||
| + | 양의 부호 (단항 연산자) | ||
| - | 음의 부호 (단항 연산자) | ||
| ++ | 전위 증가 연산자 | ||
| -- | 전위 감소 연산자 | ||
| (타입) | 타입 캐스트 연산자 | ||
| 4 | * | 곱셈 연산자 | 왼쪽에서 오른쪽으로 |
| / | 나눗셈 연산자 | ||
| % | 나머지 연산자 | ||
| 5 | + | 덧셈 연산자 (이항 연산자) | 왼쪽에서 오른쪽으로 |
| - | 뺄셈 연산자 (이항 연산자) | ||
| 6 | << | 비트 왼쪽 시프트 연산자 | 왼쪽에서 오른쪽으로 |
| >> | 부호 비트를 확장하면서 비트 오른쪽 시프트 | ||
| >>> | 부호 비트까지 모두 비트 오른쪽 시프트 | ||
| 7 | < | 관계 연산자(보다 작은) | 왼쪽에서 오른쪽으로 |
| <= | 관계 연산자(보다 작거나 같은) | ||
| > | 관계 연산자(보다 큰) | ||
| >= | 관계 연산자(보다 크거나 같은) | ||
| instanceof | 인스턴스의 실제 타입 반환 | ||
| 8 | == | 관계 연산자(와 같은) | 왼쪽에서 오른쪽으로 |
| != | 관계 연산자(와 같지 않은) | ||
| 9 | & | 비트 AND 연산자 | 왼쪽에서 오른쪽으로 |
| 10 | ^ | 비트 XOR 연산자 | 왼쪽에서 오른쪽으로 |
| 11 | | | 비트 OR 연산자 | 왼쪽에서 오른쪽으로 |
| 12 | && | 논리 AND 연산자 | 왼쪽에서 오른쪽으로 |
| 13 | || | 논리 OR 연산자 | 왼쪽에서 오른쪽으로 |
| 14 | ? : | 삼항 조건 연산자 | 오른쪽에서 왼쪽으로 |
| 15 | = | 대입 연산자 및 복합 대입 연산자 (=, +=, -=, *=, /=, %=, <<=, >>=, >>>=, &=, ^=, |=) |
오른쪽에서 왼쪽으로 |
예시
int x = 10;
int y = x-- + 5 + --x;
System.out.println("x : "+ x + ", y : " + y); // x : 8, y : 23

① 첫 번째 감소 연산자(decrement operator)는 피연산자의 뒤쪽에 위치하므로, 덧셈 연산이 먼저 수행된다.
② 덧셈 연산이 수행된 후에 감소 연산이 수행됩니다. (x의 값 : 9)
③ 두 번째 감소 연산자는 피연산자의 앞쪽에 위치하므로, 덧셈 연산보다 먼저 수행됩니다. (x의 값 : 8)
④ 감소 연산이 수행된 후에 덧셈 연산이 수행됩니다.
⑤ 마지막으로 변수 y에 결괏값의 대입 연산이 수행됩니다. (y의 값 : 23)
'내일배움캠프 > Java 기초' 카테고리의 다른 글
| 정규표현식 (0) | 2022.11.24 |
|---|---|
| continue, break (0) | 2022.11.22 |
| 타입 변환 (0) | 2022.11.17 |
| 실수의 표현 방식 (0) | 2022.11.17 |
| 기본 자료형의 메모리 크기와 데이터 표현 범위 (0) | 2022.11.17 |
Comments