1

我不明白Java中空字符串和空字符串之间的区别。

假设String a = null,我想通过使用a.isEmpty()or来查看 a 是否为空a.equals("null")。这些都不起作用。我必须用它a == null来判断 a 是否null存在。

据我了解,如果您==在两个字符串之间使用,您实际上是在比较它们在内存中的地址或引用?这种理解对吗?我希望有人能澄清我的困惑。提前致谢。

4

6 回答 6

4

null ==> 没有引用(没有引用字符串)

"" ==> 有一个指向字符串的引用(恰好是空的)

于 2013-11-01T19:44:34.187 回答
1

检查任何参考时,您总是使用。不能用,因为没有实例就不能调用实例方法,具体意思是“没有实例!”==nullObject#equals()null

于 2013-11-01T19:44:43.107 回答
0

你是对的:==测试两个字符串是否实际上是对同一个String对象的引用。

String对象正是它在锡上所说的,而null指的是缺少对象引用。使用空字符串,您可以调用所有String方法,并且通常将其视为任何其他方法String- 但null没有对象可以调用方法,因此您会得到一个NullPointerException.

于 2013-11-01T19:44:40.123 回答
0

这个:

a.equals("null")

将字符串与字符串“null”进行比较。

null是 Java 中的保留关键字,这意味着该变量不引用任何内容。

a.isEmpty()

检查字符串是否没有字符。即它等于""

于 2013-11-01T19:45:09.127 回答
0

空字符串实际上只是“”,而 null 是对任何内容的引用。所以任何为 null 的东西都没有被实例化,但一些为空的东西存在但不包含任何值。

在 Java 中要记住的是 String 是一个对象,而不是像 int 或 double 这样的原始数据类型。"==" 仅比较值之间的相等性,而不是对象引用,因此对于字符串和其他对象,您需要使用 .equals。

于 2013-11-01T19:45:15.190 回答
0

String是内存中String对象的引用变量。如果String为 null,则表示它没有引用任何 String 对象。

a.equals("null");您将内存中 String 对象的值与文字“null”进行比较。要检查 String 变量是否为 null(意味着不引用内存中的 String 对象),请使用a == null.

于 2013-11-01T19:45:16.490 回答