[Java 01] 연산자 우선 순위

연산자 우선 순위

 ✔️ 연산자 우선순위가 같을 경우

  • 연산 진행 방향(결합방향)에 의해 결정
3 * 4 * 5
1️⃣ 3 * 4
2️⃣ 12 * 5

x = y = 3
1️⃣ y = 3
2️⃣ x = 3

 

  • 연산 예시
// 1 - Type mismatch
byte a = 10;
byte b = 20;
byte c = a + b; // Type mismatch 에러 발생
// 산술 연산의 최소 단위는 int이기 때문에 'a+b'는 내부적으로 int타입으로 바껴있음.
// byte c = (byte) (a + b); 이런 식으로 바꾸든가 해야 함.

// 2 - Type mismatch
int a = 10;
long b = 20;
int c = a + b; // Type mismatch 에러 발생, 더 큰 타입이 있으면 큰 타입으로 묵시적 형변환이 일어남.
// 따라서 a + b는 long 타입임. 근데 int에 넣으려고 해서 type mismatch 에러 발생

// 3 - Type mismatch
float a = 10.0; // 10.0f 로 바꿔야 함.
float b = a + 20.0; // float이 아니라 double로 바꿔야 함.더 큰 타입(20.0)인 double로 형변환 후 연산이 진행되기 때문
// 올바른 코드
// float a = 10.0f;
// double b = a + 20.0;
  • 산술 이항 연산자는 연산 전에 피연산자의 타입을 일치시킴. (2, 3번 예시)
  • 피연산자의 크기가 4byte(int) 미만이면 int로 변경한 후 연산 진행 (1번 예시)
  • 두 개의 피연산자 중 큰 타입으로 형 변환 후 연산 진행 (2, 3번 예시)