반응형
int number = 42;
// Using String.valueOf()
String stringValue = String.valueOf(number); // "42" (string)
// Using Integer.toString()
String intValue = Integer.toString(number); // "42" (string)
String.valueOf()와 Integer.toString()
둘 다 정수 값을 문자열로 반환하는 메서드인데 차이점이 무엇인지 궁금했는데
Null 값 처리에서 차이가 있다는 것을 알게 되었다.
- String.valueOf(): 매개변수로 null을 전달하면 문자열 "null"로 변환합니다. 즉, 널 값을 문자열 "null"로 변환한다.
- Integer.toString(): 매개변수로 null을 전달할 수 없으며, NullPointerException이 발생한다.
다시 말해 String.valueOf()는 매개변수로 전달될 값이 'null'일 경우
문자열 "null"로 변환한다는 것이다.
그 이유는 String.valueOf()가 여러 다양한 데이터 타입을 처리하고
그 값을 문자열로 변환해주는 일반적인 *유틸리티 메서드이기 때문이라고 한다.
*유틸리티 메서드(utility method) |
여러 상황에서 재사용될 수 있는 간단하면서도 일반적인 기능을 수행하는 메서드로써 프로그램의 다양한 부분에서 사용되며, 반복적인 코드 작성을 줄이고 코드의 재사용성을 높이는데 도움이 된다. 유틸리티 메서드는 주로 특정 클래스나 라이브러리에서 제공되며, 일반적으로 문자열을 숫자로 변환하거나, 날짜를 형식화하거나, 파일 조작 등의 일반적인 작업을 수행한다. 코드의 가독성을 높이고 유지 관리를 쉽게 하며, 일반적인 작업을 표준화된 방법으로 처리할 수 있게 해주며 다양한 라이브러리와 프레임워크에서 유틸리티 메서드들을 제공하여 개발자들이 더 효율적이고 품질 높은 코드를 작성할 수 있도록 도와준다. |
public class Main {
public static void main(String[] args) {
Integer integerNumber = null;
// Using String.valueOf() with null value
String stringValue = String.valueOf(integerNumber);
System.out.println("String.valueOf() with null: " + stringValue); // Output: "null"
try {
// Using Integer.toString() with null value (NullPointerException)
String intValue = Integer.toString(integerNumber);
System.out.println("Integer.toString() with null: " + intValue);
} catch (NullPointerException e) {
System.out.println("Caught NullPointerException when using Integer.toString() with null");
}
}
}
위의 예시에서
IntgerNumber 변수는 'null' 값을 가지고 있는데
stringValue는 null 값이 출력되고
intValue에서는 'NullPointerException' 예외가 발생해 catch 블록이 실행된다는 것을 알 수 있다.
반응형
'활동 > 호기심' 카테고리의 다른 글
자바 for문을 이용한 '공포의 별 찍기 문제' (0) | 2023.08.25 |
---|---|
While문과 for문의 차이점 (+코드를 간결하게 만들어주는 람다 표현식 설명도 한 스푼) (0) | 2023.08.24 |
해시함수 정리 (Hash 충돌 발생 원인과 해결방법 / Hash Table과 Hash Map 차이점) (0) | 2023.08.22 |
자바 제네릭(Generic) 정의와 사용하는 이유 정리 (0) | 2023.08.21 |
chatGPT와 함께 공부하는 GROUP BY와 HAVING절은 무조건 같이 와야 하는가? (0) | 2023.06.07 |