[Java] StringUtils.isEmpty(), isBlank()

김피자·2023년 12월 20일
0

자바

목록 보기
9/9
// pom.xml
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.4</version>
</dependency> 

StringUtils.isEmpty

Apache Commons Lang 라이브러리의 메소드 중 하나인 StringUtils.isEmpty()는 주어진 문자열이 비어있는지,널(Null)인지 확인할 때 사용할 수 있다.
문자열을 검증하고 처리하는데 편리

String str1 = "";
String str2 = "hello";

boolean isEmpty1 = StringUtils.isEmpty(str1);
boolean isEmpty2 = StringUtils.isEmpty(str2);

System.out.println("isEmpty1 : " + isEmpty1);
System.out.println("isEmpty2 : " + isEmpty2);

문자열 str1, 2를 생성해 빈 값과 hello를 할당한 후, StringUtils.isEmpty()를 사용하여 비어있는지 또는 널(Null)인지 확인해보았다.

isEmpty1 : true
isEmpty2 : false 

StringUtils.isEmpty의 장점과 문제

주요 장점 중 하나는 Null에 안전하다는 것이다.
String.isEmpty()는 문자열이 Null인 경우, NullPointerException을 발생시키지만 StringUtils.isEmpty는 값을 정상적으로 처리하고 true를 반환한다.

하지만 문자열이 비어있는지, Null인지만!!! 확인한다는 점을 기억해야한다.

String str = "    ";

"(공백)(공백)(공백)...."

이렇게 공백으로만 가득 채워진 문자열은 확인하지 않는다.

StringUtils.isBlank

위 문제를 해결할 수 있는 방법은 isBlank를 사용하는 것이다.
이 메소드는 문자열이 비어 있는지 또는 Null인지 확인할 수 있을 뿐 아니라 공백인지도 확인할 수 있다.

String str = "   ";
boolean isEmpty = StringUtils.isEmpty(str);
boolean isBlank = StringUtils.isBlank(str);

System.out.println("isEmpty : " + isEmpty);
System.out.println("isBlank : " + isBlank);
isEmpty: false
isBlank: true

str은 공백 문자로 구성된 문자열이다.
문자열이 '비어'있지 않기 때문에 isEmpty는 false로 isBlank는 true를 반환하게 된다.

Equals

사실 굳이 isEmpty를 사용하지 않아도 동일한 목적으로 사용할 수 있는 Java 메소드가 존재하는데 바로 String 클래스의 메소드인 equals를 사용하는 것 이다.

String str = "";
boolean isEmpty = str.equals("");

System.out.println(isEmpty);
true

위 예는 문자열이 빈 문자열과 같은지를 확인한다.

하지만, equals 메소드는 Null로부터 안전하지 않으며 Null인 경우 NullPointerException을 발생시킨다.

length

문자열이 비어 있으면 그 길이 또한 0이 될테니 length 또한 다른 대안 중 하나다.

String str = "";
boolean isEmpty = str.length() == 0;

System.out.println(isEmpty);
true

length 메소드는 문자열의 길이가 0인지 확인하고 true를 반환한다.
equals와 유사하며 length 또한 null로부터 안전하진 않다.


비교

메소드Null 안전공백 확인
StringUtils.isEmptyOX
StringUtils.isBlankOO
equalsXX
lengthXX

끝!! @

profile
제로부터시작하는코딩생활

0개의 댓글