JAVA/기타
Java - String(문자열) .isEmpty() vs .isBlank() 차이점
99C0RN
2022. 12. 15. 16:32
Java에서 String(문자열) 데이터를 다루다보면, 해당 데이터가 존재하는지 공백인지 체크하는 경우가 자주 있습니다. Java에서는 공백 문자열 체크를 위한 기본 메서드가 여러가지 존재하는데, 그 중 String 클래스 멤버 메서드인 .isEmpty()와 .isBlank() 각각 특징 및 차이점이 무엇인지 확인해보겠습니다.
.isEmpty()
// String.java
public final class String {
public boolean isEmpty() {
return value.length == 0;
}
}
- isEmpty()는 해당 문자열 객체의 길이를 체크하여 boolean 값을 리턴한다.
문자열의 길이가 0인 경우, true 리턴 - Java 6 이후 버전에서 사용 가능하다.
.isBlank()
// String.java
public final class String {
public boolean isBlank() {
return indexOfNonWhitespace() == length();
}
}
- isBlank()는 문자열이 비어 있거나, 빈 공백으로만 이루어져 있는지 체크하여 boolean 값을 리턴한다.
문자열의 길이가 0이거나, 빈 공백("", " ")으로만 이루어져있으면 true 리턴 - Java 11 이후 버전에서 사용 가능하다.
차이점
public class Example {
public static void main(String[] args) {
// Given
String case1 = "Hi";
String case2 = "";
String case3 = " ";
// When
boolean empty_case1 = case1.isEmpty();
boolean empty_case2 = case2.isEmpty();
boolean empty_case3 = case3.isEmpty();
boolean blank_case1 = case1.isBlank();
boolean blank_case2 = case2.isBlank();
boolean blank_case3 = case3.isBlank();
// Then
System.out.println("empty_case1 = " + empty_case1);
System.out.println("empty_case2 = " + empty_case2);
System.out.println("empty_case3 = " + empty_case3);
System.out.println();
System.out.println("blank_case1 = " + blank_case1);
System.out.println("blank_case2 = " + blank_case2);
System.out.println("blank_case3 = " + blank_case3);
}
}
// 위 예제 코드 실행 결과
empty_case1 = false // case: "hi"
empty_case2 = true // case: ""
empty_case3 = false // case: " "
blank_case1 = false // case: "hi"
blank_case2 = true // case: ""
blank_case3 = true // case: " "
위 예제 코드의 실행 결과와 같이 String 객체가 " " 빈 공백을 여러개 포함하고 있는 경우 서로 다르게 처리한다는 점이 가장 큰 차이점이다.
문자열 내부 데이터가 전부 공백(스페이스)로 이루어져있는 데이터를 비어있다고 판단해야 된다면 .isBlank() 메서드를 사용하여 분기처리를 진행하면 될 것 같다.