자바의 정석 ch3 연산자

Yuri JI·2023년 1월 17일
0

연산자(operator) : 연산을 수행하는 기호
피연산자(operand) : 연산자의 작업 대상 ( 변수, 상수, 리터럴, 수식 )

연산자 우선순위

우선순위 종류 연산자
1순위 단항 연산자 ++ -- + - ~ ! (type)
2순위 산술 연산자 * / %, + -, << >>
3순위 비교 연산자 < > <= >= instanceof, == !=
4순위 논리 연산자 &, ^, |, &&, ||
5순위 삼항 연산자 ? :
6순위 대입 연산자 = += -= *= /= %= <<= >>= &= ^= |=
  • x < 0 || x < 10 && x > 5
    논리 연산자에서는 AND를 의미하는 &&&OR을 의미하는 |, ||보다 우선수위가 높다. 따라서, x < 0 || (x < 10 && x > 5) 이렇게 계산된다.

산술변환

산술변환은 연산 수행 직전에 발생하는 피연산자의 자동 형변환이다.

규칙 1. 두 피연산자의 타입을 같게 일치시킨다. (더 큰 타입으로)

큰 타입에서 작은 타입으로 형변환 시 원래의 값이 손실될 가능성이 있기 때문에, 두 피연산자의 타입 중 더 큰 타입으로 일치시킨다.

int + float -> float(산술 변환) + float = float

규칙 2. 피연산자의 타입이 int보다 작은 타입이면 int로 변환한다.

byte + byte 값을 byte 타입 변수에 저장하고자하면 값이 손실될 수 있다는 에러가 발생한다.
이는 int보다 작은 타입을 연산할 때 int로 산술변환되기 때문이다.

  • byte+byte는 산술변환되어 이미 int타입으로 계산완료 -> 이걸 byte타입 변수 sum에 저장하려하니 에러가 발생

    따라서 byte sum = (byte) (b1 + b2);처럼 형변환을 해야 컴파일 에러를 막을 수 있다.
profile
안녕하세요 😄

0개의 댓글