Java의 null 및 빈 문자열

Mohammad Irfan 2023년10월12일
  1. Java에서 빈 문자열 사용
  2. Java에서 Null 문자열 사용
  3. Java의 null 및 빈 문자열 예
  4. Java에서 equals() 메소드를 사용하여 Null 및 빈 문자열 확인
Java의 null 및 빈 문자열

이 튜토리얼에서는 Java에서 null과 빈 문자열의 차이점에 대해 설명합니다. 그러나 그 전에 emptynull 용어의 기본적인 차이점을 이해할 것입니다.

‘비어 있음’은 필요에 따라 채우거나 필요한 작업을 수행할 수 있는 빈 상자와 같습니다.

‘Null’은 관련된 속성이 있는 진공과 같기 때문에 비어 있거나 가득 찬 것으로 간주할 수 없습니다.

Java에서 문자열은 문자 시퀀스를 나타냅니다. 예를 들어 delftstack은 문자열입니다.

Java에서 빈 문자열과 null 문자열을 자주 봅니다. 많은 사람들은 빈 문자열과 null 문자열이 모두 같다고 생각하지만 null 문자열과 빈 문자열에는 차이가 있습니다.

Java에서 빈 문자열 사용

String a = ""; // empty string

여기서 a는 빈 문자열입니다. string 변수에 빈 문자열을 할당하면 reference 변수가 힙에 있는 문자열의 메모리 위치를 참조한다는 것을 나타냅니다.

빈 문자열은 문자가 없는 문자열이며 길이가 length is 0으로 잘 정의되어 있습니다. 빈 문자열에 대해 모든 문자열 작업을 수행할 수 있습니다.

length() 메서드를 사용하거나 일부 문자의 인덱스를 찾는 등의 방법으로 길이를 찾을 수 있습니다.

Java에서 Null 문자열 사용

String b = null;

여기서 b는 null 문자열입니다. 문자열 변수에 null을 할당할 때 참조 변수는 힙의 메모리 위치를 참조하지 않습니다.

null 문자열은 문자열이 전혀 없음을 의미합니다. 문자열이 아니기 때문에 길이가 없습니다.

null 문자열에 표준 문자열 작업을 적용하면 NullPointerException 런타임이 발생합니다.

Java의 null 및 빈 문자열 예

이 예에서 우리는 빈 문자열과 null 문자열을 만든 다음 length() 메서드로 작업을 확인했습니다. null 문자열은 예외를 throw하지만 빈 문자열은 예외를 throw하지 않습니다.

아래 예를 참조하십시오.

public class SimpleTesting {
  public static void main(String[] args) {
    // empty string
    String a = "";
    // null string
    String b = null;

    // printing length of empty string
    System.out.println("length a = " + a.length());

    // this piece of code will still throw nullpointerexception .*
    if (b != "") {
      // printing length of null string
      System.out.println("length b =" + b.length());
    }
  }
}

출력:

length a = 0
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.length()" because "<local2>" is null
        at SimpleTesting.main(SimpleTesting.java:15)

Java에서 equals() 메소드를 사용하여 Null 및 빈 문자열 확인

이 예제에서는 equals() 메서드와 equal == 연산자를 사용하여 빈 문자열과 null 문자열을 확인했습니다. ""null은 메모리에서 동일한 공간을 차지하지 않기 때문에 표현식 a==bfalse를 반환합니다.

간단히 말해서 변수가 동일한 객체를 가리키지 않는다고 말할 수 있습니다. a.equals(b)ab가 가리키는 객체 참조 값이 일치하지 않기 때문에 false를 반환합니다.

b.equal(a)b가 모호한 참조를 가리키고 작업이 허용되지 않기 때문에 NullPointerException을 반환합니다.

public class SimpleTesting {
  public static void main(String[] args) {
    // empty string
    String a = "";
    // null string
    String b = null;
    System.out.println(a == b);
    System.out.println(a.equals(b));
    System.out.println(b.equals(a));
  }
}

출력:

false
false
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "<local2>" is null
        at SimpleTesting.main(SimpleTesting.java:13)

관련 문장 - Java String