Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当我在Java中创建一个新字符串时,它是用null初始化还是用"&引用;?_Java_String_Initialization - Fatal编程技术网

当我在Java中创建一个新字符串时,它是用null初始化还是用"&引用;?

当我在Java中创建一个新字符串时,它是用null初始化还是用"&引用;?,java,string,initialization,Java,String,Initialization,以下是我的测试代码: String foo = new String(); System.out.println(foo); 输出为空,并写入新行。由于我是Java新手,我不知道它是由“”字符串组成的,还是将空值作为空行处理。该字符串初始化时没有字符,或者内部为“” public String() { this.offset = 0; this.count = 0; this.value = new char[0]; } 上述源代码取自Java源代码。正如另一张海报所

以下是我的测试代码:

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

输出为空,并写入新行。由于我是Java新手,我不知道它是由“”字符串组成的,还是将空值作为空行处理。

该字符串初始化时没有字符,或者内部为“”

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

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

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

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

由于调用了println()方法,该方法会在打印您传递的任何参数后打印一行。新字符串()将返回“

它是用
初始化的”
(空字符串)

印刷品:

true

谢谢你的帮助,兄弟。你在哪里找到String()构造函数代码的?我还想研究Java中的其他一些基本类型,而不是针对每种类型问7个问题。如果您安装了JDK,它将类似于C:\Program Files\Java\jdk1.7.0\src.zip。Eclipse会自动找到它,所以我所要做的就是按住ctrl键并单击String:)String的文档明确指出String()创建了一个空字符串。查看Java源代码来回答这个问题是没有抓住要点的。这是一个关于Java语言基本概念的问题。您可以通过执行
System.out.println(foo.equals(“”))轻松找到这个问题的答案
并将其与
System.out.println(foo==null)进行比较。。。但这不应该是必要的。对于任何类,“new”将为您提供对新对象实例的引用,因此它永远不会返回“null”。使用调试器查看该值如何?@Sergio:如果您
println
null,则会得到正在打印的文本“null”。只需使用
字符串foo=null进行测试;系统输出打印项次(foo)
true