在一个我一直试图熟悉的项目中,我遇到了一个看起来像这样的方法:
public boolean testString(String string){
return string != null && !"".equals(string);
}
用这种方式而不是先用变量来测试字符串是否为空有什么值(value)?我理解为什么我们会在 C 中看到常量优先(Yoda 语法),但是在 Java 中有任何理由对方法调用这样做吗?
注意:我确实了解 NullPointerException,这在这种情况下是不可能的。特别是在这种情况下,我正在寻找这样做的值(value)。
最佳答案
在这种情况下,它没有什么区别,因为它已经测试过是否为 null。通常你这样做是为了确保你不会在空引用上调用成员(导致 NullPointerException),即
"test".equals(myString)
永远不会抛出空指针异常而
myString.equals("test")
如果 myString 为 null,则执行。所以基本上,第一个测试确保它是一个字符串(非空)并且它等于“测试”。
关于java - test !"".equals(someString) 的值是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5345080/