当我在Java中创建一个新的String时,它是用null还是用""初始化的?

16 java string initialization

这是我的测试代码:

String foo = new String();
System.out.println(foo);
Run Code Online (Sandbox Code Playgroud)

输出为空白并写入新行.由于我是Java的新手,我不知道它是否是一个""字符串,或者空值是作为空行处理的.

Chr*_*ett 24

字符串初始化时没有字符,或者内部为"".

public String() {
    this.offset = 0;
    this.count = 0;
    this.value = new char[0];
}
Run Code Online (Sandbox Code Playgroud)

上面的源代码来自Java源代码.正如另一张海报指出的那样,引用可以为null或指向一个对象,如果你创建一个String对象并获得一个指向它的引用,那么引用将不为null.


DJC*_*rth 8

"null"是变量的值,而不是String的值."foo"可以具有null值,但实际的String不能.你所做的是创建一个新的空String(如构造函数的文档所述)并将其分配给foo.