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