Skip to content

연산자 Operator

부호 연산자

  • + : 부호 유지
  • - : 부호 변경(int 등)
    byte b = 100;
    int result = -b; // 부호 변경
    

증감 연산자

  • ++ : 1 증가
  • -- : 1 감소

산술 연산자

  • + : 덧셈
  • - : 뺄셈
  • * : 곱셈
  • / : 나눗셈
  • % : 나눗셈의 나머지

NaN & Infinity

/ 또는 % 연산에서 0으로 나눠지는 경우에는 예외가 발생하나,
좌측 피연산자가 실수 or 우측 피연산자가 0.0 또는 0.0f이면, Infinity/NaN이 된다
  • Double.isInfinite()
  • Double.isNaN()
Double.isInfinite(5/0.0) // true
Double.isNaN(5%0.0) // NaN

비교 연산자

  • 동등 비교
    • == : 값이 같은지 검사
    • != : 값이 다른지 검사
  • 크기 비교
    • >, >=, <, <=

논리 연산자

  • AND 연산자(논리곱)
    • && : 앞의 피연산자가 false라면, 뒤의 피연산자를 평가하지 않고 바로 false 산출
    • & : 두 피연산자 모두를 평가해서 산출
  • OR 연산자(논리합) || 또는 |
  • XOR 연산자(배타적 논리합) ^
  • NOT 연산자(논리 부정) !
A B A && B A ㅣㅣ B ^A !A
true true true true false false
true false false true true
false true false true true
false false false false false true

비트 논리 연산자

bit 단위로 논리 연산 수행

2진수로 저장되는 정수 타입 (byte, short, int, long)만 피연산자가 될 수 있다

  • AND 연산자(논리곱) &
  • OR 연산자(논리합) |
  • XOR 연산자(배타적 논리합) ^
  • NOT 연산자(논리 부정) ~
A B A & B A ㅣ B ^A ~A
1 1 1 1 0 0
1 0 0 1 1
0 1 0 1 1
0 0 0 0 0 1

비트 논리 연산자는 byte, short, char 타입 피연산자를 int 타입으로 자동 변환한 후 연산을 수행하므로 연산 결과는 Int 타입이다

byte num1 = 45;
byte num2 = 25;
int result = num1 & num2;

byte receiveData = -120;
Byte.toUnsignedInt(receiveData); // = receiveData & 255

비트 이동 연산자 Shift

  • a << b : 정수 a의 각 비트를 b만큼 왼쪽으로 이동 (a*2^b)
    (오른쪽 빈자리는 0으로 채움)
  • a >> b : 정수 a의 각 비트를 b만큼 오른쪽으로 이동 (a/2^b)
    (왼쪽 빈자리는 최상위 부호 비트와 같은 값으로 채움)
  • a >>> b : 정수 a의 각 비트를 b만큼 오른쪽으로 이동
    (왼쪽 빈자리는 0으로 채움)

대입 연산자

  • = : 변수에 값 저장
  • +=, -=, *=, /=, %= : 산술 연산값 저장
  • &=, |=, ^= : 논리 연산값 저장
  • <<=, >>=, >>>= : 비트 연산값 저장

삼항(조건) 연산자

조건식 ? true일때  또는 연산식 : false일때  또는 연산식

연산자 우선순위


Quote

  • 이것이 자바다 (저자: 신용권, 임경균 | 출판사: 한빛미디어)