NaN과 Infinity 연산, null 출력

2024. 1. 30. 01:18Backend 취업준비/Java

  • 정수 타입을 0으로 연산 할 경우
5 / 0 => ArithmeticException 예외 발생
5 % 0 => ArithmeticException 예외 발생
  • 정수 타입을 0.0 또는 0.0f으로 연산 할 경우
5 / 0.0 => Infinity
5 % 0.0 => NaN
  • 연산의 결과가 Infinity 혹은 NaN인지 확인하려면 Double.isInfinite() 와 Double.inNan() 메소드를 사용하면 된다.
  • 자바에서는 Infinity와 NaN이 Double클래스에 정의 되어 있으며, 연산 또한 가능하지만 유의미한 결과를 얻을 수는 없다.

 

 

 

결과

NaN

-Infinity

Infinity

 

 

 

 

 

 

 

 

 

toString() 과 valueOf()의 null처리

Object nullValue = null;

String str;

str = nullValue.toString(); // NullPointerException 발생
str = String.valueOf(nullValue); // 문자열 "null"로 변환됨
  • toString() 은 본래 객체에 대한 정보를 문자열로 전환하기 위한 메서드인데, String에서는 문자열을 반환하도록 오버라이딩 되어 있지만 null객체에는 그렇지 않음.
  • 따라서 null객체에 대한 정보를 문자열로 전환하려고 시도하지만, null객체는 말 그대로 참조하는 곳이 없는데, 이를 참조하려 시도하였으므로 NullPointerException발생
  • valueOf은 다음과 같이 null일 때의 처리가 되어있다