이항 연산자

Dongwoo Joo·2024년 12월 10일

java

목록 보기
6/8

개요

Java의 이항 연산자를 정리해보자.

java의 모든 이항연산자를 우선순위로 정리

[], .
expr++, expr--
++expr, --expr, +expr, ~, !, (type)
*, /, %
+, -
<<, >>, >>>
<, >, <=, =>, instanceof
==, !=
&
^
|
&&
||
? expr : expr
=, +=, -=, *=, /=, %=, &=, ^=, !=, <<=, >>=, >>>=

자주 사용하는 이항 연산자

증감 연산자

  • a++: 연산 후 a+=1;
  • ++a: 연산 전 a+=1;
  • a--: 연산 후 a-=1;
  • --a: 연산 전 a-=1;

+=, -=: 대입연산자 참고

산술 연산자

  • 더하기(+): 두 피연산자 값을 더한다.
  • 빼기(-): 왼쪽 피연산자 값에서 오른쪽 피연산자 값을 뺀다.
  • 곱하기(*): 두 피연산자의 값을 곱한다.
  • 나누기(/): 왼쪽의 피연산자 값을 오른쪽의 피연산자 값으로 나눈다.
  • 나눈 후 나머지(%): 왼쪽의 피연산자 값을 오른쪽의 피연산자 값으로 나누었을 때, 나머지를 반환한다.

나눗셈 주의사항
두 피연산자가 정수인 경우, 나눗셈의 몫이 소수점이 없이 정수로 출력된다. 만약, 두 피연산자가 실수인 경우, 실수형 나눗셈의 결과가 출력된다.

대입 연산자

  • 할당(=): 연산자 오른쪽에 있는 값을 연산자 왼쪽에 있는 변수에 대입한다.
  • 더하고 재할당(+=)
  • 빼고 재할당(-=)
  • 곱하고 재할당(*=)
  • 나누고 재할당(/=)
  • 나머지 재할당(%=)
int a = 2;
a = a + 5;	 // a = 7
a += 5; 	 // a == 12

a = a / 2;   // a = 6
a /= 2;  	 // a = 3

소괄호()

특정 연산을 소괄호로 묶으면 연산자의 우선순위에 상관없이 소괄호 내부의 연산이 먼저 실행된다.

관계 연산자

true/false를 반환한다.

  • a < b: a가 b보다 작은가?
  • a > b: a가 b보다 큰가?
  • a <= b: a가 b보다 작거나 같은가?
  • a >= b: a가 b보다 크거나 같은가?
  • a == b: a와 b가 같은가?
  • a != b: a와 b가 다른가?

주의사항: 크거나 같고, 작거나 같을 경우 "="는 항상 오른쪽에 위치한다.

논리 연산자

논리 게이트를 떠올리자.

  • a && b: AND 게이트: a, b 모두 true일 경우만 true
  • a || b: OR 게이트: a, b 둘 중 하나라도 true일 경우 true
  • !a: NOT 게이트: a의 bool 값의 반대값. a == true 일 경우, !a == false

주의사항
연산의 특성 중 Short-Circuit Evaluation(Lazy Evaluation)(이하 SCE)이 있다.
SCE는 연산의 효율 및 속도를 높이기 위해서 불필요한 연산을 생략하는 행위이다.

  • && 연산자의 경우,
    (연산1) && (연산2) 표현식이 있을 때, 연산1이 false라면, 연산2를 확인하지 않는다.
  • || 연산자의 경우,
    (연산1) || (연산2) 표현식이 있을 때, 연산1이 true라면, 연산2를 확인하지 않는다.

만약 로직에서 연산2를 실행시켜야하는 경우라면 SCE로 실행되지 않을 위험성이 있다.
따라서, 반드시 실행시켜야 할 표현식은 논리 연산자 밖에 표현식을 따로 만들어서 명확하게 작성하는 것이 좋다.

profile
pursue nature

0개의 댓글