개발하다 보면 문자열이 비어 있는지 확인해야 하는 경우가 있다.
Java에서는 대표적으로
isEmpty()
isBlank()
를 사용할 수 있는데, 둘이 비슷해 보여도 공백을 처리하는 방식에서 차이가 있다.
간단하게 정리해봤다.
isEmpty()
isEmpty()는 문자열의 길이가 0인지 확인한다.
public class Main {
public static void main(String[] args) {
String value1 = "";
String value2 = " ";
String value3 = "Hello";
System.out.println(value1.isEmpty());
System.out.println(value2.isEmpty());
System.out.println(value3.isEmpty());
}
}
실행 결과

빈 문자열인
""
은 길이가 0이기 때문에 true가 나온다.
하지만
" "
처럼 공백이 들어 있는 문자열은 길이가 0이 아니기 때문에 false가 나온다.
즉,
isEmpty()는 공백까지 빈 값으로 판단하지 않는다.
isBlank()
isBlank()는 빈 문자열뿐만 아니라
공백으로만 이루어진 문자열도 true로 판단한다.
public class Main {
public static void main(String[] args) {
String value1 = "";
String value2 = " ";
String value3 = "Hello";
System.out.println(value1.isBlank());
System.out.println(value2.isBlank());
System.out.println(value3.isBlank());
}
}
실행 결과

isEmpty()와 가장 큰 차이가 여기다.
"" → true
" " → true
"Hello" → false
사용자가 입력한 값이 빈 문자열인지뿐만 아니라
공백만 입력했는지까지 확인하고 싶다면 isBlank()가 편하다.
isEmpty와 isBlank 비교
둘의 차이를 한 번에 보면 아래와 같다.
| 문자열 | isEmpty() | isBlank() |
| "" | true | true |
| " " | false | true |
| " " | false | true |
| "Hello" | false | false |
결국 핵심은
isEmpty() → 문자열 길이가 0인지 확인
isBlank() → 빈 문자열 또는 공백 문자열인지 확인
이라고 보면 된다.
한 번에 비교해보기
실제로 두 메서드를 같이 실행해보면 차이가 더 쉽게 보인다.
public class Main {
public static void main(String[] args) {
String empty = "";
String blank = " ";
String text = "Hello";
System.out.println("=== isEmpty ===");
System.out.println(empty.isEmpty());
System.out.println(blank.isEmpty());
System.out.println(text.isEmpty());
System.out.println();
System.out.println("=== isBlank ===");
System.out.println(empty.isBlank());
System.out.println(blank.isBlank());
System.out.println(text.isBlank());
}
}
실행 결과

null에서는 사용할 수 있을까?
여기서 하나 주의할 점이 있다.
isEmpty()와 isBlank() 모두
문자열이 null인 상태에서 바로 호출하면 에러가 발생한다.
public class Main {
public static void main(String[] args) {
String value = null;
System.out.println(value.isBlank());
}
}
실행하면

이 발생한다.
따라서 null이 들어올 가능성이 있다면 먼저 확인해야 한다.
if (value == null || value.isBlank()) {
System.out.println("빈 값입니다.");
}
이렇게 작성하면
null / 빈 문자열 / 공백 문자열
을 같이 확인할 수 있다.
어떤 걸 사용하면 될까?
단순히
문자열 길이가 0인지 확인
하고 싶다면
value.isEmpty()
공백까지 포함해서
실제로 값이 입력되어 있는지 확인
하고 싶다면
value.isBlank()
를 사용하면 된다.
개인적으로 사용자 입력값을 확인하는 경우에는
공백만 들어오는 경우도 있기 때문에 isBlank()를 사용할 일이 더 많은 것 같다.
단, null 체크는 별도로 해줘야 한다.
정리
isEmpty()
"".isEmpty(); // true
" ".isEmpty(); // false
isBlank()
"".isBlank(); // true
" ".isBlank(); // true
가장 큰 차이는 공백 문자열을 어떻게 처리하느냐다.
그리고
null.isBlank()
처럼 null 상태에서는 사용할 수 없기 때문에
null 가능성이 있다면 먼저 확인해야 한다.
'개발지식 > Java' 카테고리의 다른 글
| [자바/JAVA] double을 int로 변환하는 방법 | 캐스팅, Math.round 차이 (0) | 2026.09.23 |
|---|---|
| [자바/JAVA] 정적 바인딩 VS 동적 바인딩 (의의, 장/단점) (0) | 2023.09.05 |
| [자바/JAVA] 추상 클래스 VS 인터페이스 (특징, 사용하는 이유, 차이점) (0) | 2023.09.01 |
| [자바/JAVA] final 의미와 사용법 (0) | 2023.08.30 |
| [자바/JAVA] 변수의 선언 위치 (클래스 변수, 인스턴스 변수, 지역 변수) (0) | 2023.08.30 |
