Java 为什么代码会忽略其中一个IF要求?

Java 为什么代码会忽略其中一个IF要求?,java,Java,我肯定这很明显,但我不知道我错过了什么。代码是: } else if (flag != null && date != null && !date.equals("") && (disability != null || flagEnd == null)) //do stuff } 我已经仔细检查了变量。标志不为空、日期为空、残疾为空、鞭笞为空。代码不应该单步执行此操作,因为日期为空,但它是空的。我写错了吗 注意:日期是一个字符串。flag

我肯定这很明显,但我不知道我错过了什么。代码是:

} else if (flag != null && date != null &&
!date.equals("") && (disability != null || flagEnd == null)) 

//do stuff

}
我已经仔细检查了变量。标志不为空、日期为空、残疾为空、鞭笞为空。代码不应该单步执行此操作,因为日期为空,但它是空的。我写错了吗

注意:日期是一个字符串。flagind是一个java.util.Date。谢谢

编辑:以下是创建日期变量的代码

String date = (rs.getString("date") != null && rs.getString("date").length() > 0 ? rs.getString("date") : "NULL");
而不是日期!=空,我应该换成这个吗

!date.equals("NULL")

该字符串实际上存储了单词“NULL”,而不是空字符串。有一次我把代码改成了!date.equals(“NULL”),它跳过了ELSE-IF语句,就像它应该具有的那样

你所描述的听起来不可能。请提供一个。尝试使用调试器遍历此问题,并在
else if
行中插入断点。代码停止后,您可以检查每个变量,查看每个变量的值。编辑:随机思维。。。如果date是字符串“null”而不是null引用呢?这就是我要做的。以下是变量本身:flag DefaultElement(id=86)、date“NULL”(id=66)、disability NULL、Flagind NULL。编辑:您可能在那里发现了什么,字符串来自数据库读取。让我尝试一下,好像null是一个值而不是null引用。听起来像date==“null”和!=无效的