연산자(operator): 연산을 수행하는 기호
피연산자(operand): 연산자의 작업 대상 (변수, 상수, 리터럴, 수식)
식(expression): 연산자와 피연산자를 조합하여 계산하고자 하는 바를 표현한 것
식의 평가(evaluation): 식을 계산하여 결과를 얻는 것
대입연산자
=
로 식의 평가 결과를 변수에 담아 저장할 수 있음
종류 | 연산자 |
---|---|
산술 연산자 | + , - , * , / , % , << , >> |
비교 연산자 | < , > , <= , >= , == , != |
논리 연산자 | && , \|\| , ! , & , \| , ^ , ~ |
대입 연산자 | = |
기타 | (type) , ?: , instanceof |
수학에서처럼 곱셉과 나눗셈(*
, /
)이 덧셈과 뺄셈(+
, -
) 보다 우선함.
단항 연산자(부호를 결정하는 -
)가 이항 연산자보다 우선함.
사칙 연산자가 쉬프트 연산자(<<
, >>
)보다 우선함.
x << 2 + 1 // + 먼저 수행
비교 연산자가 비트 연산자보다 우선함.
result & 0xFF == 0 // == 먼저 수행
논리 연산자 중에서 AND(&
, &&
)가 OR(|
, ||
) 보다 우선함.
x < -3 || x > 5 && x < 7 // && 먼저 적용하여 양쪽의 식을 괄호로 묶는 것과 똑같이 수행
이항 연산자는 두 피연산자 타입이 일치해야 수행 가능하므로 타입이 다르면 형변환이 먼저 요구됨. 형변환을 생략할 시, 작은 타입을 큰 타입으로 자동 형변환시킴. 이를 산술 변환 이라고 함.
두 피연산자 타입을 큰 쪽에 맞춰 형변환함.
long
+ int
→ long
+ long
float
+ int
→ float
+ float
double
+ float
→ double
+ double
피연산자의 타입이 int
보다 작으면 int
로 변환함.
byte
+ short
→ int
+ int
char
+ short
→ int
+ int