개요
개발을 하다 보면 문자열이 비어있는지 검증해야 하는 경우가 자주 발생합니다. Java에서는 이를 위해 isEmpty()와 isBlank() 두 가지 메서드를 제공합니다.
이 두 메서드는 언뜻 보면 비슷한 기능을 하는 것처럼 보이지만, 실제 사용 시나리오에서는 중요한 차이점이 있습니다.
본 글에서는 두 메서드의 차이점을 정리하고자 합니다.
isBlank() 메서드란❓
Java 11부터 도입된 String 클래스의 메서드입니다.
String str1 = ""; // true
String str2 = " "; // true
String str3 = "\t\n"; // true
String str4 = "hello"; // false
문자열이 비어있거나 공백 문자(whitespace)로만 구성되어 있는지 확인하는 메서드입니다. 공백, 탭, 줄바꿈 등 모든 종류의 공백 문자를 확인하며, 실제 의미있는 문자가 있는지 체크할 때 유용합니다.
isEmpty() 메서드란❓
String str1 = ""; // true
String str2 = " "; // false
String str3 = "\t\n"; // false
String str4 = "hello"; // false
Java의 기본 String 메서드로, 문자열의 길이가 0인 경우에만 true를 반환합니다.
length() == 0과 동일한 결과를 제공하며, 순수하게 빈 문자열인지만을 확인합니다.
isBlank()와 isEmpty() 메서드의 차이점 알아보기
1. 공백 문자 처리
- isEmpty()
- 공백 문자도 문자로 인식하여 false 반환
- isBlank()
- 공백 문자를 의미없는 문자로 간주하여 true 반환
2. 사용 목적
- isEmpty()
- 순수하게 빈 문자열 체크
- isBlank()
- 의미있는 내용이 있는지 체크
// 정확히 빈 문자열 검증
String emptyString = "";
System.out.println(emptyString.isEmpty()); // true
System.out.println(emptyString.isBlank()); // true
// 사용자 입력 검증
String userInput = " ";
System.out.println(userInput.isEmpty()); // false
System.out.println(userInput.isBlank()); // true
// 파일 내용 검증
String fileContent = "\n\t";
System.out.println(fileContent.isEmpty()); // false
System.out.println(fileContent.isBlank()); // true
위 코드에서 알 수 있듯이 isEmpty()와 isBlank()는 공백 문자를 처리하는 방식에서 중요한 차이를 보입니다.
isEmpty()는 오직 문자열의 길이만을 확인합니다. userInput의 경우 공백 문자 3개, fileContent의 경우 줄바꿈과 탭 문자 2개가 있으므로 둘 다 길이가 0이 아니어서 false를 반환합니다.
반면 isBlank()는 문자열에 실제 의미 있는 문자(공백이 아닌 문자)가 있는지를 확인합니다. 두 문자열 모두 공백 문자들(공백, \n, \t)로만 이루어져 있으므로 true를 반환합니다.
따라서 실제 데이터 유효성을 검사할 때는 단순히 빈 문자열만 체크하는 isEmpty()보다 의미 있는 내용이 있는지 확인하는 isBlank()가 더 유용할 수 있습니다.
결론
- isEmpty()
- 정확히 빈 문자열("")인지 체크할 때 사용합니다.
- isBlank()
- 실제 의미있는 내용이 있는지 체크할 때 사용합니다.
- 사용자 입력 검증이나 데이터 유효성 검사에는 isBlank()가 더 적합합니다.