我不明白Java中空字符串和空字符串之间的区别。
假设String a = null
,我想通过使用a.isEmpty()
or来查看 a 是否为空a.equals("null")
。这些都不起作用。我必须用它a == null
来判断 a 是否null
存在。
据我了解,如果您==
在两个字符串之间使用,您实际上是在比较它们在内存中的地址或引用?这种理解对吗?我希望有人能澄清我的困惑。提前致谢。
我不明白Java中空字符串和空字符串之间的区别。
假设String a = null
,我想通过使用a.isEmpty()
or来查看 a 是否为空a.equals("null")
。这些都不起作用。我必须用它a == null
来判断 a 是否null
存在。
据我了解,如果您==
在两个字符串之间使用,您实际上是在比较它们在内存中的地址或引用?这种理解对吗?我希望有人能澄清我的困惑。提前致谢。
null ==> 没有引用(没有引用字符串)
"" ==> 有一个指向字符串的引用(恰好是空的)
检查任何参考时,您总是使用。不能用,因为没有实例就不能调用实例方法,具体意思是“没有实例!”==
null
Object#equals()
null
你是对的:==
测试两个字符串是否实际上是对同一个String
对象的引用。
空String
对象正是它在锡上所说的,而null
指的是缺少对象引用。使用空字符串,您可以调用所有String
方法,并且通常将其视为任何其他方法String
- 但null
没有对象可以调用方法,因此您会得到一个NullPointerException
.
这个:
a.equals("null")
将字符串与字符串“null”进行比较。
null
是 Java 中的保留关键字,这意味着该变量不引用任何内容。
a.isEmpty()
检查字符串是否没有字符。即它等于""
。
空字符串实际上只是“”,而 null 是对任何内容的引用。所以任何为 null 的东西都没有被实例化,但一些为空的东西存在但不包含任何值。
在 Java 中要记住的是 String 是一个对象,而不是像 int 或 double 这样的原始数据类型。"==" 仅比较值之间的相等性,而不是对象引用,因此对于字符串和其他对象,您需要使用 .equals。
String
是内存中String对象的引用变量。如果String
为 null,则表示它没有引用任何 String 对象。
在a.equals("null");
您将内存中 String 对象的值与文字“null”进行比较。要检查 String 变量是否为 null(意味着不引用内存中的 String 对象),请使用a == null
.