equals() / !equals() 사용타입이 허용하는 최대/최소값을 벗어나는 것을 말한다.
그러면 에러가 날 것 같지만, 값이 순환하는 것처럼 최대값을 넘기면 최소값부터 다시 시작하게 된다. 따라서 계산 시, 타입을 잘 맞춰주지 않으면 원하는 값이 나오지 않을 수 있다.
나눗셈(/) 또는 나머지(%) 연산에서 좌측 피연산자가 정수이고,
우측 피연산자가 0일 경우
➡ 예외(ArithmeticException)가 발생.
무한대의 값을 정수로 표현할 수 없기 때문이다.
우측 피연산자가 0.0 또는 0.0f이면
➡ 예외 발생 X, NaN(Noy a Number) 또는 Infinity(무한대) 발생.
예외가 발생하지 않고서 연산이 계속 된다면, 연산 Data가 엉망이 될 수 있기 때문에 /와%연산의 결과가 NaN 또는 Infinity인지 먼저 확인을 해보는 것이 좋다.
Double.isInfinite(변수) 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만큼 오른쪽으로 이동