- 산술 연산자 :
+ - * / % << >>
- 비교 연산자 :
> < >= <= == !=
- 논리 연산자 :
&& || ~ & | ^ ~
- 대입 연산자 :
=
- 기 타 :
(type) ?: instanceof
** AND를 의미하는 '&'과 '&&'가 OR을 의미하는 '|'와 '||'보다 우선순위가 높다.
- 산술 > 비교 > 논리 > 대입. 대입은 제일 마지막에 수행된다.
- 단항 > 이항 > 삼학. 단항 연산자의 순위가 이항 연산자의 순위보다 높다.
- 단항 연산자와 대입 연산자를 제외한 모든 연산의 진행방향은 왼쪽에서 오른쪽이다.
이항 연산자는 두 피연산자의 타입이 일치해야 연산이 가능하다.
연산 전에 피연산자 타입의 일치를 위해 자동 형변환 되는 것을 '산술변환', '일반 산술 변환'이라 한다.
- 두 피연산자의 타입을 같게 일치시킨다. (보다 큰 타입으로 일치)
- 피연산자의 타입이 int보다 작은 타입이면 int로 변환한다.
class Operator{
public static void main(String args[]) {
int a = 1_000_000;
int b = 2_000_000;
long c = a * b;
System.out.println(c);
}
}
int타입과 int타입의 연산 결과는 int타입이므로. long타입으로 자동 형변환 되어도 엉뚱한 값이 변하지는 않는다.