Java String:null和empty之间的区别

时间:2013-11-01 19:41:07

标签: java string null comparison

我不明白Java中的null String和空String之间的区别。

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

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

6 个答案:

答案 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