Java String null 체크 방법 비교 및 추천
Java String null 체크 방법 어떤 게 가장 좋을까?
Java String null 체크 방법은 종류가 생각보다 많습니다. 실무에서도 다양한 방법이 많이 보입니다. 가는 곳마다 다르고, 개발자마다 다른 경우도 많습니다.
이게 생각보다 고민이 되는 문제이기 때문에 다양한 Java String null 체크 방법을 비교해 보고, 저만의 Best Practice를 정해봤습니다.

Apache Commons lang3 – StringUtils.isNotBlank
import org.apache.commons.lang3.StringUtils;
if (StringUtils.isNotBlank(userInput)) {
// 진짜 의미 있는 텍스트가 있을 때만 실행
} else {
// null 이거나 "" 이거나 " " 이거나 전부 여기로 들어옴
}
null과 “”(빈 문자열)과 ” “(공백 문자열)까지 모두 체크됩니다. StringUtils.IsBlank 메서드를 사용하면 그 반대도 가능합니다.
Apache Commons lang3 라이브러리는 대부분의 프로젝트에서 사용하는 굉장히 대중적인 라이브러리이고, 다른 자주 사용하는 유틸 기능들도 많기 때문에 라이브러리 의존성 추가에 대한 부담도 적습니다.
제가 가장 추천하고 싶은 방법입니다.
StringUtils.isNotEmpty나 StringUtils.isEmpty를 사용하는 경우도 많은데 이 메서드는 ” “(공백 문자열)을 체크하지 못하기 때문에 정말 확실히 안 들어온다는 보장이 있을 경우가 아니면 추천하지 않습니다.
StringUtils (Apache Commons Lang 3.9 API)
Spring Framework – StringUtils.hasText
import org.springframework.util.StringUtils;
if (StringUtils.hasText(text)) {
// 진짜 의미 있는 텍스트가 있을 때만 실행
} else {
// null 이거나 "" 이거나 " " 이거나 전부 여기로 들어옴
}
Apache Commons lang3 – StringUtils.isNotBlank와 기능적으로는 완전히 동일하고, Spring Framework나 SpringBoot를 사용하면 의존성 추가도 필요 없어서 좋습니다.
Apache Commons lang3 라이브러리 의존성을 추가하지 못하는 상황이라면 StringUtils.hasText도 좋은 선택입니다.
StringUtils (Spring Framework 7.0.0 API)
직접 유틸 클래스 제작
public class StringUtil {
public static boolean hasText(String text) {
return text != null && text.trim().length() > 0;
}
}
직접 만드는 것도 좋지만 Apache Commons lang3 라이브러리 사용할 거라면 굳이 이미 있는 걸 중복 개발할 필요는 없을 것 같습니다.
Apache Commons lang3 라이브러리를 사용하지 않더라도 Spring은 대부분 사용할 테니까 StringUtils.hasText 메서드를 사용하는 게 더 좋을 것 같습니다.
그리고 이렇게 직접 구현하다 보면 예상하지 못한 문제가 발생하기도 합니다. 위 코드는 얼핏 보면 별문제가 없어 보이지만 원본 문자열과 trim() 호출 후의 결과가 다르면 새로운 문자열 객체가 불필요하게 메모리에 생성되는 문제가 있습니다. 검증된 라이브러리를 사용하는 게 아무래도 안전하다고 생각합니다.
String.isBlank
JDK 11버전부터 Java 자체적으로도 String null 체크를 해주는 메서드가 생겼습니다. 하지만 String 값이 null이면 NullPointerException이 발생합니다.
// text가 null이면 NullPointerException 발생
if (!text.isBlank()) {
}
// 이렇게 조건을 하나 더 걸어줘야 NullPointerException 방지 가능
if (text != null && !text.isBlank()) {
}
null 체크를 추가적으로 해줘야 하기 때문에 별로 추천하고 싶지 않은 방법입니다. String.isEmpty 메서드가 사용된 소스도 많이 봤었는데 이건 ” “(공백 문자열) 체크까지 안 되기 때문에 더더욱 추천하고 싶지 않습니다.
제일 하지 말아야 하는 Java String null 체크 방법
// 이런 조건문을 필요한 곳마다 직접 코딩하는 것이 제일 하지 말아야 하는 방법이다.
if (text != null && text.trim().length() > 0) {
}
// 이렇게 하다 보면 결국에는 아래와 같이 체크가 완벽하지 않거나, 혼란스러운 상황이 펼쳐진다.
// 표준을 확실히 정해야 한다.
if (text != null && text.length() > 0) {
}
if (text != null && !"".equals(text)) {
}
if (text != null) {
}
if (!"".equals(text)) {
}
필요한 곳마다 각자 알아서 코딩하는 방법은 가장 하지 말아야 하는 방법이다. 언젠가는 문제가 터질 수밖에 없습니다.
결론
Java String null 체크 방법 중 가장 추천하는 방법은 Apache Commons lang3 – StringUtils.isNotBlank 메서드를 사용하는 것입니다.
라이브러리 의존성을 추가하지 못하는 환경이라면 Spring Framework – StringUtils.hasText 메서드를 사용하는 것을 추천합니다.
제일 하지 말아야 하는 방법은 표준 없이 각자 필요한 곳마다 직접 코딩하는 것입니다.