Java の Null および空の文字列

Mohammad Irfan 2023年10月12日
  1. Java で空の文字列を使用する
  2. Java で Null 文字列を使用する
  3. Java でのヌルおよび空の文字列の例
  4. Java の equals() メソッドを使用して、Null と空の文字列を確認する
Java の Null および空の文字列

このチュートリアルでは、Java の null 文字列と空の文字列の違いについて説明します。ただし、その前に、null の用語の基本的な違いを理解します。

は空の箱のようなもので、必要に応じて記入したり、必要に応じて使用したりできます。

Null は、いくつかのプロパティが関連付けられたバキュームのようなものです。そのため、空でも満杯でもないと見なすことはできません。

Java では、文字列は文字のシーケンスを参照します。たとえば、delftstack は文字列です。

Java では空の文字列と null 文字列がよく見られます。多くの人は、空の文字列と null の文字列は同じだと思いますが、null と空の文字列には違いがあります。

Java で空の文字列を使用する

String a = ""; // empty string

ここで、a は空の文字列です。空の文字列を string 変数に割り当てると、reference 変数がヒープ内の文字列のメモリ位置を参照していることを示します。

空の文字列は、文字が含まれていない文字列であり、明確に定義された長さ - 長さは 0 です。空の文字列に対してすべての文字列操作を実行できます。

length() メソッドを使用したり、一部の文字のインデックスを調べたりすることで、その長さを見つけることができます。

Java で Null 文字列を使用する

String b = null;

ここで、b はヌル文字列です。文字列変数に null を割り当てる場合、参照変数はヒープ内のメモリ位置を参照しません。

null 文字列は、文字列がまったくないことを意味します。文字列ではないので長さはありません。

標準の文字列操作を null 文字列に適用すると、NullPointerException ランタイムが発生します。

Java でのヌルおよび空の文字列の例

この例では、空の文字列と null の文字列を作成し、length() メソッドでそれらが機能することを確認しました。null 文字列は例外をスローしますが、空の文字列は例外をスローしません。

以下の例を参照してください。

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 を返します。

簡単に言えば、変数は同じオブジェクトを指していないと言えます。ab が指すオブジェクト参照値が一致しないため、a.equals(b)false を返します。

b はあいまいな参照を指し、操作が許可されていないため、b.equal(a)NullPointerExpception を返します。

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