Java 中的 Null 和空字串

Mohammad Irfan 2023年1月30日 2022年4月26日
  1. 在 Java 中使用空字串
  2. 在 Java 中使用空字串
  3. Java 中的空字串示例
  4. 使用 Java 中的 equals() 方法檢查 Null 和空字串
Java 中的 Null 和空字串

本教程將討論 Java 中 null 和空字串之間的區別。但在此之前,我們將瞭解 nullempty 之間的基本區別。

Empty 就像一個空盒子,我們可以根據需要使用它來填充它或做需要。

Null 就像一個真空,帶有一些與之相關的屬性,因此我們既不能認為它是空的,也不能認為它是滿的。

在 Java 中,字串是指字元序列。例如,delftstack 是一個字串。

我們經常在 Java 中看到空字串和 null 字串。很多人認為空字串和空字串是一樣的,但是空字串和空字串是有區別的。

在 Java 中使用空字串

String a = ""; // empty string

這裡的 a 是一個空字串。當我們將空字串分配給 string 變數時,它表明 reference 變數引用了堆中字串的記憶體位置。

空字串是其中沒有字元的字串,它具有明確定義的長度長度為 0。我們可以對空字串執行所有字串操作。

我們可以通過使用 length() 方法找到它的長度,找出一些字元的索引等。

在 Java 中使用空字串

String b = null;

這裡的 b 是一個空字串。將 null 分配給字串變數時,引用變數不引用堆中的任何記憶體位置。

空字串表示根本沒有字串。它沒有長度,因為它根本不是字串。

對空字串應用任何標準字串操作將導致 NullPointerException 執行時。

Java 中的空字串示例

在這個例子中,我們建立了一個空字串和一個空字串,然後我們使用 length() 方法檢查它們的工作情況。空字串會引發異常,而空字串不會。

請參見下面的示例。

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 == 運算子來檢查空字串。表示式 a==b 將返回 false,因為""null 在記憶體中不佔用相同的空間。

簡單來說,我們可以說變數不指向同一個物件。a.equals(b) 將返回 false,因為 ab 指向的物件引用值不匹配。

b.equal(a) 將返回 NullPointerExpception 因為 b 指向一個模糊的引用,並且不允許任何操作。

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