49

String s = null空字符串 ( ) 和空字符串 ( )有什么区别String s = ""

这就是我所拥有的:

String s1 = ""; //print statement does not print any thing for s1 but s1.length()=0
String s2 = null;//print statement prints "null" for s2  but s2.length() gives exception

这是什么意思?

4

4 回答 4

71

String s1 = "";表示将空String分配给s1。在这种情况下,s1.length()与 相同"".length(),这将按0预期产生。

String s2 = null;表示将 ( null) 或“根本没有值”分配给s2。所以这个,s2.length()与 相同null.length(),这将产生 aNullPointerException因为你不能null在 Java 中调用变量(指针,排序)的方法。

还有一点,声明

String s1;

实际上与以下效果相同:

String s1 = null;

然而

String s1 = "";

如前所述,是另一回事。

于 2013-05-18T03:22:21.243 回答
10

Null没有任何意义。它只是一个字面意思。Null是参考变量的值。但是空字符串是空白的。它给出了length=0. 空字符串是一个空值,表示该字符串没有任何东西。

于 2013-05-18T03:27:13.520 回答
6

不能对分配了NULL值的对象调用任何方法。它会给一个nullPointerException. 因此,s2.length()给出一个例外。

于 2013-05-18T03:25:10.443 回答
4

当对象变量最初用在像 Java 这样的语言中时,它们完全没有任何价值——不是零,而是字面上没有价值——也就是说null

例如:String s;

如果您要使用s,它实际上将具有 的值null,因为它绝对没有任何内容。

然而,一个空字符串是一个值——它是一个没有字符的字符串。

String s; //Inits to null
String a =""; //A blank string

Null本质上是“无”——它是 Java 分配给任何未初始化的 Object 变量的默认“值”(松散地使用该术语)。

Null不是真正的价值 - 因此,没有属性。因此,调用任何旨在返回值的东西 - 例如.length(), 总是会返回错误,因为“无”不能具有属性。

为了更深入地了解,通过创建s1 = "";您正在初始化一个对象,该对象可以具有属性并占用内存中的相关空间。通过使用s2;,您将该变量名称指定为字符串,但实际上并没有在此时分配任何值。

于 2013-05-18T03:21:59.807 回答