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

时间:2010-05-11 16:48:32

标签: java string initialization

这是我的测试代码:

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

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

5 个答案:

答案 0 :(得分:23)

字符串初始化时没有字符,或“”内部。

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

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

答案 1 :(得分:8)

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

答案 2 :(得分:4)

new String()创建一个长度为零的String。如果你只是说“String foo;”作为成员变量,它将被初始化为null。如果你说“String foo;”作为函数变量,它是未定义的,如果您尝试在不指定值的情况下使用它,则会产生编译错误。

答案 3 :(得分:3)

""(空字符串)

初始化
public class StringTest {
    public static void main( String [] args ) {
        System.out.println( "".equals(new String()));
    }
}

打印:

true

答案 4 :(得分:1)

打印一个新行是因为您调用了println()方法,该方法在打印您传递的任何参数后打印一行。 new String()将返回“”。