Java 에서 문자열이 비어 있는지 확인하는 방법

JavaBeginner
지금 연습하기

소개

이 랩에서는 Java 에서 문자열이 비어 있는지 확인하는 방법을 배우게 됩니다. Java 11 에 도입된 isBlank() 메서드를 살펴보고, 이 메서드가 문자열이 비어 있거나 공백 문자만 포함하는지 효율적으로 판단하는 방법을 익힐 것입니다.

실습 예제를 통해 먼저 isBlank()를 사용하여 다양한 문자열 유형을 확인합니다. 그런 다음, 강력한 문자열 유효성 검사를 위해 isBlank()를 null 검사와 결합하는 방법을 배웁니다. 마지막으로, isBlank()isEmpty()의 동작을 비교하여 주요 차이점을 이해할 것입니다.

isBlank() 를 사용하여 빈 문자열 확인

이 단계에서는 Java 에서 isBlank() 메서드를 사용하여 문자열이 비어 있는지 확인하는 방법을 배우게 됩니다. 빈 문자열은 공백 문자 (스페이스, 탭, 줄 바꿈) 만 포함하거나 비어 있는 문자열입니다.

isBlank() 메서드는 Java 11 에 도입되었으며, 빈 문자열을 확인하는 편리한 방법입니다. 문자열이 비어 있거나 공백만 포함하는 경우 true를 반환하고, 그렇지 않으면 false를 반환합니다.

isBlank() 메서드를 시연하기 위해 간단한 Java 프로그램을 만들어 보겠습니다.

  1. WebIDE 편집기에서 HelloJava.java 파일을 엽니다 (아직 열려 있지 않은 경우).

  2. 파일의 전체 내용을 다음 코드로 바꿉니다.

    public class HelloJava {
        public static void main(String[] args) {
            String str1 = ""; // Empty string
            String str2 = "   "; // String with only spaces
            String str3 = "Hello"; // Non-blank string
            String str4 = " Hello "; // String with leading/trailing spaces
    
            System.out.println("Is str1 blank? " + str1.isBlank());
            System.out.println("Is str2 blank? " + str2.isBlank());
            System.out.println("Is str3 blank? " + str3.isBlank());
            System.out.println("Is str4 blank? " + str4.isBlank());
        }
    }

    이 코드에서:

    • 빈 문자열, 공백만 있는 문자열, 비어 있지 않은 문자열, 앞/뒤 공백이 있는 문자열 등 네 가지 다른 문자열을 선언합니다.
    • str.isBlank()를 사용하여 각 문자열이 비어 있는지 확인하고 결과를 출력합니다.
  3. 파일을 저장합니다 (Ctrl+S 또는 Cmd+S).

  4. 이제 프로그램을 컴파일해 보겠습니다. WebIDE 하단의 터미널을 열고 ~/project 디렉토리에 있는지 확인합니다. 그렇지 않은 경우 cd ~/project 명령을 사용합니다. 그런 다음, javac 명령을 사용하여 코드를 컴파일합니다.

    javac HelloJava.java

    오류가 없으면 HelloJava.class 파일이 ~/project 디렉토리에 생성됩니다.

  5. 마지막으로, java 명령을 사용하여 컴파일된 프로그램을 실행합니다.

    java HelloJava

    다음 출력을 볼 수 있습니다.

    Is str1 blank? true
    Is str2 blank? true
    Is str3 blank? false
    Is str4 blank? false

    보시다시피, isBlank()는 빈 문자열 (str1) 과 공백만 있는 문자열 (str2) 을 올바르게 빈 문자열로 식별하는 반면, str3str4는 공백이 아닌 문자를 포함하므로 비어 있지 않은 것으로 간주됩니다.

isBlank() 와 Null 검사 결합

이전 단계에서는 isBlank()를 사용하여 빈 문자열 또는 공백만 있는 문자열을 확인하는 방법을 배웠습니다. 그러나 문자열 변수가 null인 경우 isBlank()NullPointerException을 발생시킵니다. 실제 응용 프로그램에서는 null 문자열을 접하는 경우가 많으므로 이를 적절하게 처리하는 것이 중요합니다.

문자열이 null이거나 비어 있는지 안전하게 확인하려면 null 검사를 isBlank() 메서드와 결합해야 합니다. 이를 수행하는 가장 일반적인 방법은 if 문을 사용하는 것입니다.

if (str == null || str.isBlank()) {
    // The string is null or blank
} else {
    // The string is not null and not blank
}

null 문자열을 포함하고 이를 처리하는 방법을 시연하기 위해 프로그램을 수정해 보겠습니다.

  1. WebIDE 편집기에서 HelloJava.java 파일을 엽니다.

  2. 현재 코드를 다음으로 바꿉니다.

    public class HelloJava {
        public static void main(String[] args) {
            String str1 = ""; // Empty string
            String str2 = "   "; // String with only spaces
            String str3 = "Hello"; // Non-blank string
            String str4 = null; // Null string
    
            System.out.println("Is str1 null or blank? " + (str1 == null || str1.isBlank()));
            System.out.println("Is str2 null or blank? " + (str2 == null || str2.isBlank()));
            System.out.println("Is str3 null or blank? " + (str3 == null || str3.isBlank()));
            System.out.println("Is str4 null or blank? " + (str4 == null || str4.isBlank()));
        }
    }

    이 업데이트된 코드에서:

    • null 문자열 변수 str4를 추가했습니다.
    • 각 문자열이 null이거나 비어 있는지 확인하기 위해 조건 str == null || str.isBlank()를 사용합니다. || 연산자는 "or"를 의미합니다. 첫 번째 부분 (str == null) 이 true 이면 두 번째 부분 (str.isBlank()) 은 확인되지 않으므로 NullPointerException이 발생하지 않습니다.
  3. 파일을 저장합니다 (Ctrl+S 또는 Cmd+S).

  4. 터미널에서 수정된 프로그램을 컴파일합니다.

    javac HelloJava.java
  5. 컴파일된 프로그램을 실행합니다.

    java HelloJava

    다음 출력을 볼 수 있습니다.

    Is str1 null or blank? true
    Is str2 null or blank? true
    Is str3 null or blank? false
    Is str4 null or blank? true

    이 출력은 결합된 검사가 빈 문자열, 공백이 있는 문자열, null 문자열을 "null or blank"로 올바르게 식별하는 반면, 비어 있지 않은 문자열은 "not null or blank"로 올바르게 식별함을 보여줍니다.

null 검사를 isBlank()와 결합하는 것은 Java 프로그램에서 다양한 문자열 상태를 처리하는 강력한 방법입니다.

isBlank() 와 isEmpty() 비교

이전 단계에서 isBlank()를 사용하여 비어 있거나 공백만 포함하는 문자열을 확인했습니다. Java 에서 isEmpty() 메서드에 대해서도 들어보셨을 것입니다. 이 단계에서는 isBlank()isEmpty()를 비교하여 두 메서드의 차이점을 이해해 보겠습니다.

isEmpty() 메서드는 버전 1.0 부터 Java 에서 사용할 수 있었습니다. 문자열의 길이가 0 인 경우 (즉, 빈 문자열 "") 에만 true를 반환합니다. 공백만 포함하는 문자열을 포함하여 다른 모든 문자열에 대해 false를 반환합니다.

isBlank()isEmpty()를 모두 사용하고 다양한 유형의 문자열에서 어떻게 동작하는지 확인하기 위해 마지막으로 프로그램을 수정해 보겠습니다.

  1. WebIDE 편집기에서 HelloJava.java 파일을 엽니다.

  2. 현재 코드를 다음으로 바꿉니다.

    public class HelloJava {
        public static void main(String[] args) {
            String str1 = ""; // Empty string
            String str2 = "   "; // String with only spaces
            String str3 = "Hello"; // Non-blank string
            String str4 = null; // Null string
    
            System.out.println("--- Using isBlank() ---");
            System.out.println("Is str1 blank? " + (str1 == null || str1.isBlank()));
            System.out.println("Is str2 blank? " + (str2 == null || str2.isBlank()));
            System.out.println("Is str3 blank? " + (str3 == null || str3.isBlank()));
            // Note: We still need the null check before calling isBlank()
            System.out.println("Is str4 blank? " + (str4 == null || str4.isBlank()));
    
            System.out.println("\n--- Using isEmpty() ---");
            // Note: We also need a null check before calling isEmpty()
            System.out.println("Is str1 empty? " + (str1 == null || str1.isEmpty()));
            System.out.println("Is str2 empty? " + (str2 == null || str2.isEmpty()));
            System.out.println("Is str3 empty? " + (str3 == null || str3.isEmpty()));
            System.out.println("Is str4 empty? " + (str4 == null || str4.isEmpty()));
        }
    }

    이 코드에서:

    • isBlank()isEmpty()를 모두 시연하기 위한 섹션을 추가했습니다.
    • NullPointerException을 방지하기 위해 isBlank()isEmpty()를 호출하기 전에 결합된 null 검사 (str == null || ...) 를 사용합니다.
  3. 파일을 저장합니다 (Ctrl+S 또는 Cmd+S).

  4. 터미널에서 프로그램을 컴파일합니다.

    javac HelloJava.java
  5. 컴파일된 프로그램을 실행합니다.

    java HelloJava

    다음 출력을 볼 수 있습니다.

    --- Using isBlank() ---
    Is str1 blank? true
    Is str2 blank? true
    Is str3 blank? false
    Is str4 blank? true
    
    --- Using isEmpty() ---
    Is str1 empty? true
    Is str2 empty? false
    Is str3 empty? false
    Is str4 empty? true

    출력에서 주요 차이점을 확인할 수 있습니다.

    • isBlank()는 빈 문자열 ("") 과 공백만 있는 문자열 (" ") 모두에 대해 true를 반환합니다.
    • isEmpty()는 빈 문자열 ("") 에 대해서만 true를 반환합니다. 공백만 있는 문자열 (" ") 에 대해서는 false를 반환합니다.

    두 메서드 모두 잠재적으로 null 일 수 있는 문자열에 대해 호출되기 전에 null 검사가 필요합니다.

요약하면 다음과 같습니다.

  • 문자열의 길이가 0 인지 확인하려는 경우 isEmpty()를 사용합니다.
  • 문자열이 비어 있거나 공백 문자를 포함하는지 확인하려는 경우 isBlank()를 사용합니다.

이 두 메서드의 차이점을 이해하는 것은 Java 에서 정확하고 강력한 문자열 처리 코드를 작성하는 데 매우 중요합니다.

요약

이 Lab 에서는 Java 11 에 도입된 isBlank() 메서드를 사용하여 Java 에서 문자열이 비어 있는지 확인하는 방법을 배웠습니다. 빈 문자열, 공백만 있는 문자열, 내용이 있는 문자열을 포함한 다양한 유형의 문자열에서 isBlank()를 사용하는 연습을 했습니다. 또한 isBlank()의 기능을 시연하기 위해 간단한 Java 프로그램을 컴파일하고 실행했습니다.