java.lang.String 클래스에는 비어 있는 문자열인지 체크하는 두 개의 메소드가 있습니다.

isEmpty() / isBlank() 두 메소드는 무엇이 다를까? 그 차이점을 알아보겠습니다.

1. isEmpty()

  • JAVA 6 이후에 추가된 메소드 입니다.
  • 문자열의 길이가 0인 경우에, true를 리턴합니다.
  • 내부적으로 구현은 String의 length가 0인지 체크하는 방식으로 되어 있습니다.
public boolean isEmpty() {
    return value.length == 0;
}

 

2. isBlank()

  • JAVA 11 이후의 버전에서 사용 가능합니다.
  • 문자열이 비어 있거나, 빈 공백으로만 이루어져 있으면, true를 리턴합니다.
  • 내부적으로는 WhiteSpace 아닌 첫 번째 인덱스와 전체 길이가 같은지 체크합니다.
public boolean isBlank() {
    return indexOfNonWhitespace() == length();
}

 

테스트 코드 구현

  • Junit 5을 활용하여 Java 11 버전에서 테스트를 수행하였습니다.
  • Test 환경이 없으신 분은 System.out.println 메소드를 사용해서 테스트 하시면 됩니다. System.out.println("Hello".isEmpty()); 
// isEmpty와 isBlank 메소드 둘 다 성공한 테스트입니다.
@Test
void isEmpty(){
    assertEquals("Hello".isEmpty(), false);
    assertEquals("Hello ".isEmpty(), false);

    assertEquals("".isEmpty(), true);
    assertEquals(" ".isEmpty(), false);
    assertEquals("\n\t".isEmpty(), false);
}

@Test
void isBlank(){
    assertEquals("Hello".isBlank(), false);
    assertEquals("Hello ".isBlank(), false);

    assertEquals("".isBlank(), true);
    assertEquals(" ".isBlank(), true);
    assertEquals("\n\t".isBlank(), true);
}

정리

위의 테스트 코드를 보면, 나머지 케이스는 isEmpty()와 isBlank()가 같지만,
마지막에 " ", "\n", "\t"와 같은 공백이 있는 문자열을 체크하는 경우에는 두 메소드의 결과가 다릅니다.

 

isEmpty()는 문자열의 길이를 체크하여, 문자열의 길이가 0인 경우에만 true를 리턴하기 때문에 빈 공백이 들어있는 문자열은 false를 리턴합니다.

 

isBlank()는 문자열이 비어 있는 경우와 공백(white space)를 포함하고 있는 경우 모두 true를 리턴합니다.

 

끝으로, isBlank()는 Java 11 버전에 추가되었기 때문에 Java 11 버전과 그 이후 버전에서만 사용 가능합니다.

 

참고

'Java' 카테고리의 다른 글

Gradle 로 Junit 5 테스트 할 수 있도록 빌드 하기  (0) 2021.10.26
Java에서 큰 수 다루기 (BigInteger)  (0) 2021.08.05
Java Packages & API 사용하기  (0) 2021.07.06
Java tutorial  (0) 2021.07.02

+ Recent posts