콘텐츠로 건너뛰기

Java Common Lang 라이브러리의 StringUtils isEmpty isBlank 메소드 차이

Apache Commons Lang 라이브러리는 많은 유용한 유틸 클래스가 포함되어 있습니다. 그 중 StringUtils isEmpty isBlank 두 가지 메소드 차이를 간략하게 소개 해 봅니다.

StringUtils isEmpty isBlank 차이

StringUtils 클래스에 포함된 isEmpty, isBlank 두 메소드 모두 문자열이 빈 값인지 여부를 true, false로 리턴 해 줍니다. 다만 동작에 약간의 차이가 있습니다.

StringUtils.isEmpty(null);     // true
StringUtils.isEmpty("");       // true
StringUtils.isEmpty(" ");      // false
StringUtils.isEmpty("    ");   // false
StringUtils.isBlank(null);     // true
StringUtils.isBlank("");       // true
StringUtils.isBlank(" ");      // true
StringUtils.isBlank("    ");   // true

isEmpty의 경우 공백은 빈 값으로 취급하지 않고, isBlank는 null을 포함하여 공백 문자도 모두 빈 값으로 판단합니다. 상황에 따라 두 메소드를 구분하여 사용하면 유용합니다.

간단히 말해서, StringUtils.isEmpty()는 문자열이 비어있는지를 확인하고, StringUtils.isBlank()는 문자열이 비어있거나 공백으로만 이루어져 있는지를 확인합니다.

commons-lang3 부터는 StringUtils.isNotEmpty, StringUtils.isNotBlank 메소드가 추가 되었으니 코드 작성이 간결해 집니다.

isEmpty, isBlank를 사용하지 않는다면?

소스코드를 작성하다 보면 문자열 변수의 값이 비어있는지 여부를 체크 코드를 자주 작성합니다. 이 때 늘 null 값에 대한 처리 때문에 코드가 길어지는 경우를 많이 경험합니다.

예를 들면 입력 받은 문자열이 빈 값이 아닌 경우에만 동작하는 프로그램은 아래처럼 작성하게 됩니다.

if (str != null && !str.equals("")) {  // 1번
    // 실행 하려는 코드
}
// 또는 
if (!"".equals(str)) {  // 2번
    // 실행 하려는 코드
}

보통 위 예제 코드의 1번 처럼 작성을 많이 하죠? 2번 방법으로 짧게 쓰는 방법도 있긴 하지만 StringUtils를 활용하는 방법이 더 좋아 보입니다.

if (!StringUtils.isEmpty(str)) {
    // 실행 하려는 코드
}
// 또는
if (StringUtils.isNotEmpty(str)) {
    // 실행 하려는 코드
}

isEmpty 또는 isNotEmpty 메소드를 사용하는 게 훨씬 좋아 보입니다. commons-lang3을 사용한다면 isNotEmpty 메소드를 사용하는 것이 코드의 의도가 쉽게 파악되어 더 좋습니다.

정리

Apache의 Commons Lang 라이브러리는 정말 많이 쓰입니다. 자바에서 사용하는 많은 라이브러리들이 commons-lang 라이브러리에 대한 의존성을 가지고 있습니다. 의도하지 않더라도 자신의 자바 프로그램에 commons-lang 라이브러리가 포함되어 있을 확률이 높습니다.

이 글에서 소개하는 StringUtils 말고도 다른 유용한 유틸 클래스들이 많이 구현되어 있습니다. commons-lang 라이브러리에 포함된 여러 클래스들을 잘 활용할 수 있다면 코드의 품질을 많이 높일 수 있습니다. 적극 활용 하는 것을 추천 합니다!


답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다