IT/Java

[Java] 연산의 방향과 우선순위

Huitopia 2024. 2. 21. 15:13
728x90

연산자는 우선순위 및 연산 방향이 정해져 있어 복잡한 연산식에서는 주의가 필요하다.

연산자 연산 방향 우선순위
증감(++, --), 부호(+, -), 비트(~), 논리(!) ⬅️ 높음










⬇️










낮음
산술(*, /, %) ➡️
산술(+, -) ➡️
쉬프트(<<, >>, >>>) ➡️
비교(<, >, <=, >=, instanceof) ➡️
비교(==, !=) ➡️
논리(&) ➡️
논리(^) ➡️
논리(|) ➡️
논리(&&) ➡️
논리(||) ➡️
조건(?:) ➡️
대입(=, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>>=) ⬅️

 

표를 숙지했다 하더라도 여러가지 연산자들이 섞여 있다면 어느 연산자가 먼저 처리될지 알기 어려우니 먼저 처리해야 할 연산을 괄호()로 묶는 것을 추천한다. 괄호()는 최우선 순위를 가지기 때문이다.

 

int var1 = 1;
int var2 = 2;
int var3 = 2;
int result = var1 + var2 * var3;

+ 보다 *가 우선순위이므로 * 먼저 계산

  1. var2 * var3 = 4
  2. var1 + 4
int result = (var1 + var2) * var3

+보다 *가 우선순위지만 괄호 사용으로 최우선 순위 먼저 계산

  1. var1 + var2 = 3
  2. 3 * var3
728x90