Java의 이항 연산자를 정리해보자.
java의 모든 이항연산자를 우선순위로 정리
[], .
expr++, expr--
++expr, --expr, +expr, ~, !, (type)
*, /, %
+, -
<<, >>, >>>
<, >, <=, =>, instanceof
==, !=
&
^
|
&&
||
? expr : expr
=, +=, -=, *=, /=, %=, &=, ^=, !=, <<=, >>=, >>>=
+=, -=: 대입연산자 참고
나눗셈 주의사항
두 피연산자가 정수인 경우, 나눗셈의 몫이 소수점이 없이 정수로 출력된다. 만약, 두 피연산자가 실수인 경우, 실수형 나눗셈의 결과가 출력된다.
int a = 2;
a = a + 5; // a = 7
a += 5; // a == 12
a = a / 2; // a = 6
a /= 2; // a = 3
특정 연산을 소괄호로 묶으면 연산자의 우선순위에 상관없이 소괄호 내부의 연산이 먼저 실행된다.
true/false를 반환한다.
주의사항: 크거나 같고, 작거나 같을 경우 "="는 항상 오른쪽에 위치한다.
논리 게이트를 떠올리자.
주의사항
연산의 특성 중 Short-Circuit Evaluation(Lazy Evaluation)(이하 SCE)이 있다.
SCE는 연산의 효율 및 속도를 높이기 위해서 불필요한 연산을 생략하는 행위이다.
만약 로직에서 연산2를 실행시켜야하는 경우라면 SCE로 실행되지 않을 위험성이 있다.
따라서, 반드시 실행시켜야 할 표현식은 논리 연산자 밖에 표현식을 따로 만들어서 명확하게 작성하는 것이 좋다.