isEmpty() — 문자열이 비어있는지 확인하기

드코미·2026년 6월 20일
post-thumbnail

문자열의 길이가 0인지(아무 글자도 없는지) 검사하는 메서드입니다. 결과는 true/false로 나옵니다.

String a = "";
String b = "hello";

a.isEmpty();  // true  (빈 문자열)
b.isEmpty();  // false (글자가 있음)

내부적으로는 이렇게 동작한다고 보면 됩니다:

// isEmpty()는 사실상 이것과 같은 의미
str.length() == 0

실제로 isEmpty()의 자바 내부 구현도 return length() == 0; 입니다. 그러니까 isEmpty()length() == 0을 더 읽기 쉽게 표현한 것뿐이에요.

왜 JadenCase 문제에서 필요했나

split(" ")로 문자열을 자르면, 연속된 공백이 있을 경우 빈 문자열("")이 배열 안에 생깁니다.

"a  b".split(" ")
// 결과: ["a", "", "b"]   ← 가운데 빈 문자열 생김 (공백 2개라서)

이 빈 문자열에 charAt(0)을 호출하면:

"".charAt(0)
// StringIndexOutOfBoundsException 발생!

에러가 터집니다. 인덱스 0번째 글자를 달라고 했는데, 글자가 아예 없으니까요.

그래서 처리하기 전에 먼저 "이 단어가 빈 문자열인지" 확인해서, 비어있으면 건드리지 않고 그대로 두는 안전장치가 필요한 거예요.

if (!words[i].isEmpty()) {
    // 비어있지 않을 때만 첫 글자 대문자 처리
    String lower = words[i].toLowerCase();
    words[i] = Character.toUpperCase(lower.charAt(0)) + lower.substring(1);
}
// 비어있으면 아무것도 안 하고 그대로 둠 (어차피 join할 때 그대로 들어가서 공백 구조 유지됨)

참고: null과는 다른 개념

isEmpty()는 문자열이 ""(빈 값)인지 확인하는 거고, null인지 확인하는 게 아니에요.

String s1 = "";      // 빈 문자열, isEmpty() → true
String s2 = null;    // 아예 값이 없음

s1.isEmpty();  // true
s2.isEmpty();  // NullPointerException! null에는 메서드 호출 자체가 안 됨

null 체크까지 같이 해야 한다면 s != null && s.isEmpty() 식으로 같이 검사해야 하는데, 우리 문제에서는 split 결과로 나오는 배열 원소가 null이 될 일은 없어서 isEmpty()만으로 충분합니다.

정리

표현의미
s.isEmpty()문자열 길이가 0인가? (s.length() == 0과 동일)
s == null문자열 자체가 존재하지 않는가? (값이 아예 없음)

isEmpty()는 "빈 문자열 때문에 생기는 에러(charAt 같은)"를 미리 막아주는 안전장치로 자주 쓰입니다.

profile
할 수 있다!!!

0개의 댓글