2016-12-07 37 views
-4

有许多答案和博客说该检查在Java中null或空字符串正确的方法是如下虽然检查Java中的字符串是否为空如果(str == null)不正确,为什么(str!= null &&!str.isEmpty())被认为是正确的

if(str != null && !str.isEmpty()) 

但后来很多答案说

if(str == null) 

是一种错误的方式来检查在该检查字符串的空值我们看看这两个对象是否占用了内存中的相同空间。我理解这种说法,但如果是这种情况,那么即使使用!=完成的检查也不应该是检查是否为空的正确方法。请帮我理解这种情况。

+1

*“如果(str == null)不正确时检查Java中的字符串是否为空”*引用? – m0skit0

+2

*但是,然后很多答案都说'if(str == null)'是检查字符串空值的错误方法,因为在这个检查中我们看到两个对象是否占用内存中的相同空间。* - {{citation needed }} – vaxquis

+0

我建议你检查对象_reference_和对象_content_之间的区别。 – m0skit0

回答

0

由于意见已经指出,检查一个字符串引用(或任何对象的事)是null既不是坏习惯也不是坏习惯。

我觉得你很困惑2概念:对象参考和对象内容null是一个空引用,因此您可以始终使用==来检查对象引用(例如变量,常量,参数等)是否为空,因为您正在比较引用而不是内容。另一方面,要比较2个字符串(它们的存储器内容,而不是它们的存储器地址),应该使用equals而不是==。这是因为equals比较了对象的内容(实际上它不是那么简单,因为它取决于它的实现和/或覆盖,但是现在让我们忘记)而不是对象引用。

相关问题