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 라이브러리에 포함된 여러 클래스들을 잘 활용할 수 있다면 코드의 품질을 많이 높일 수 있습니다. 적극 활용 하는 것을 추천 합니다!