⚡ 개요
java 에서 String을 사용할 때 분명 null 또는 빈 문자열 체크를 무조건 한 번은 하게 된다.
이때 사용하는 isEmpty 와 isBlank 에 대해서 내부 동작은 어떻게 하는지 그래서 어떤 차이가 있는지 한번 정리하려고 한다.
매우 간단한 내용이 될것이다. 하지만 자주 사용하니 혹시 내가 놓친 부분이 있다면 한 번쯤 봐도 좋을 듯싶다.
📎 isEmpty
String 클래스 내부에 오버라이딩 되어있는 isEmpty 메소드이다.
@Override
public boolean isEmpty() {
return value.length == 0;
}
위의 내용과 같이 별 내용이 없다.
문자열의 길이가 0 인경우 true를 리턴해주는 메소드 이다.
📎 isBlank
isBlank 의 경우는 java 11 이후에 추가된 메소드 이다.
isEmpty 메소드와 사용법이 동일하지만 다른점이라고 한다면 빈 공백이 들어 있는 겨우에는 false를 리턴하게 된다.
public boolean isBlank() {
return indexOfNonWhitespace() == length();
}
BUT 주의할 점이 있다. 바로 null이다.
아래의 이미지와 같이 간단한 테스트 코드를 작성해서 보면 바로 알려준다.
절대 실수 하지 말자.
데이터를 검증을 할 때마다 null을 허용하지 않던가, null을 체크해서 처리를 해야 한다.
이 과정에서 분명 NullPointerException이 발생할 가능성이 매우 높아지고 실수가 나올 가능성이 존재한다.
Apache에서는 자바의 기본 래퍼 클래스에 대한 지원을 하는 라이브러리를 제공해주는데 여기서는 문자열, 숫자, 날짜 등 여러 가지 처리를 편하게 해주는 함수를 제공한다.
📎 Apache Utils 클래스
// 근본
import org.apache.commons.lang3.StringUtils;
// 추가 Utils
import org.apache.logging.log4j.util.Strings;
근본적으로 많이 사용하는 유틸 말고도 기본적인 래퍼 클래스에 대한 지원을 해주는 라이브러리는 많이 있다.
내부적을 클래스의 내용을 확인해 보고 사용하자.
왜 위의 Util 클래스가 사용하기 좋은지 내부를 한번 살펴보면 좋을 거 같다.
위의 두 개의 메소드를 살펴보면 알겠지만 기본적으로 내부에서 null 체크를 다 해준다.
기본적인 메소드를 사용하는 것도 좋지만 데이터에 대해서 null이 들어올 가능성이 존재한다면 utils 클래스를 사용해서 처리하는 게 좋다고 생각을 한다.
이 외에도 다른 래퍼 클래스에 대해서 유틸성 기능을 제공하기 때문에 사용할 때 한 번쯤은 확인해보고 사용하면 좋을 거 같다.
'Java' 카테고리의 다른 글
[JAVA] java 21 LTS 릴리즈 내용 정리 (0) | 2023.09.20 |
---|---|
[JAVA] stream forEach 에 관한 내용 정리 (0) | 2023.09.16 |
[JPA] 하이버네이트(Hibernate) 에 대한 내용 정리 (0) | 2023.05.01 |
[Java] Wrapper Class 의 캐싱에 대한 내용 정리 (0) | 2023.04.16 |
[JAVA] Stream에 대한 사용법 및 내용 정리 (0) | 2023.02.26 |