未检测到空值。绕过if条件java
如图所示,expiryTime打印为null,如控制台中所示。然而,它绕过了if条件,我甚至打印了(expiryTime==null)和(expiryTime==null)。然而,它给我的是虚假的。为什么可能这样做?试试这个:未检测到空值。绕过if条件java,java,Java,如图所示,expiryTime打印为null,如控制台中所示。然而,它绕过了if条件,我甚至打印了(expiryTime==null)和(expiryTime==null)。然而,它给我的是虚假的。为什么可能这样做?试试这个: if(expiryTime == null || expiryTime.isEmpty() || expiryTime.equals("null")) { /* do your stuffs here */ } 如果与“null”进行比较,则您的,而不是null。它不
if(expiryTime == null || expiryTime.isEmpty() || expiryTime.equals("null")) { /* do your stuffs here */ }
如果与“null”进行比较,则您的
,而不是null
。它不是询问expiryTime是否为null,而是询问它是否是一个与字符串常量相同的字符串实例“null”
。请在尝试询问更多问题之前阅读。一个好的问题没有模糊的不可读的代码图片和错误消息/堆栈跟踪,它有实际的文本。不要使用=
操作符比较字符串,使用String.equals(String anotherString)
或String.equalsIgnoreCase(String anotherString)
instead@yshavit它实际上是在比较两者,但是对字符串“null”
的比较是使用=
,而不是equals()
。Andreas向您指出了另一个描述您的问题的SO问题(您使用=
比较字符串的事实)和修复方法(改为使用.equals
方法)。这还不够吗?这不是一个代码编写服务,我们来这里是为了提供帮助,但不是充当一个黑匣子,在这个黑匣子中,坏代码进入,固定代码出来。“do stuff”块永远不能执行,因为非null会导致第一次测试失败,null会导致NPE。另外,问题中没有关于检查空字符串的内容。@Desmond-试试这段代码。它会起作用的。@Andreas-我添加了empty,因为作者似乎对null和string方法感到困惑。