연산자

최수정·2022년 12월 1일
0

이것이 JAVA다

목록 보기
5/10

🟦 Tip

  • 산술 연산을 정확하게 계산하고 싶다면 실수 타입을 사용하지 않는 것이 좋다. ➡ 부동 소수점 방식 이슈
  • 문자열 비교시 연산자 대신 equals() / !equals() 사용
  • 비트 논리 연산자는 결과값이 int 타입이 되므로 int 변수에 대입해야 한다.

🟨 오버플로우와 언더플로우

타입이 허용하는 최대/최소값을 벗어나는 것을 말한다.
그러면 에러가 날 것 같지만, 값이 순환하는 것처럼 최대값을 넘기면 최소값부터 다시 시작하게 된다. 따라서 계산 시, 타입을 잘 맞춰주지 않으면 원하는 값이 나오지 않을 수 있다.

⬛ 나눗셈 연산 후 NaN과 Infinity 처리

나눗셈(/) 또는 나머지(%) 연산에서 좌측 피연산자가 정수이고,

  • 우측 피연산자가 0일 경우
    예외(ArithmeticException)가 발생.
    무한대의 값을 정수로 표현할 수 없기 때문이다.

  • 우측 피연산자가 0.0 또는 0.0f이면
    ➡ 예외 발생 X, NaN(Noy a Number) 또는 Infinity(무한대) 발생.


예외가 발생하지 않고서 연산이 계속 된다면, 연산 Data가 엉망이 될 수 있기 때문에 /와%연산의 결과가 NaN 또는 Infinity인지 먼저 확인을 해보는 것이 좋다.

  • boolean result = Double.isInfinite(변수)
  • boolean result =Double.isNaN(변수)
if(Double.isInfinite(x) || Double.isNaN(x) {
    System.out.println("값 산출 불가");
}

🟥 부동 소수점 방식 실수관련

0.1f == 0.1 ➡ false

True가 나올 줄 알았지만, float와 double 타입의 정밀도 차이 때문에 false가 나온다.

0.1f == (float) 0.1 ➡ true // 강제형변환으로 해결

🟦 비트 이동 연산자

a << b ➡ a x 2^b 와 동일한 결과, 정수 a의 각 비트를 b만큼 왼쪽으로 이동
a >> b ➡ a / 2^b 와 동일한 결과, 정수 a의 각 비트를 b만큼 오른쪽으로 이동

0개의 댓글