当我在Java中创建新字符串时,它是用null还是用“ ”初始化?

2022-09-02 23:40:02

这是我的测试代码:

String foo = new String();
System.out.println(foo);

输出为空,并写入一个新行。由于我是Java的新手,我不知道它是否做了一个“ ”字符串,或者nulls被处理为空行。


答案 1

字符串初始化为不带字符,或在内部初始化为“”。

public String() {
    this.offset = 0;
    this.count = 0;
    this.value = new char[0];
}

上面的源代码取自 Java 源代码。正如另一个海报所指出的,引用可以是 null 或指向某个对象,如果创建一个 String 对象并获取指向该对象的引用,则该引用将不会为 null。


答案 2

“null”是变量的值,而不是字符串的值。“foo”可以有空值,但实际的字符串不能。您所做的是创建一个新的空字符串(如构造函数的文档所述)并将其分配给 foo。