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