在java中检查非空值的最佳方法是什么。
String query ="abcd";
query != null
vs !query.equals(null).
哪个更好?为什么?
答案 0 :(得分:25)
第一个更好(以及唯一选项),因为第二个会抛出NPE
,当你的价值是实际上是null
。 就这么简单。
试试这个:
String str = null;
str.equals(null); // will throw `NPE`.
基本上,在第二种情况下,您想要执行的测试会触发NullPointerException
。所以,别无选择。
答案 1 :(得分:11)
!str.equals(null)
将
空检查的目的是确保此代码str
中的引用实际引用一个对象。如果它为null,则不能在其上调用任何方法,包括equals
,而不会抛出NullPointerException
...空值检查的点是为了避免发生
所以!str.equals(null)
会导致问题,因为空检查是为了防止和根本不做你想的。永远不要这样做。
答案 2 :(得分:2)
query != null
更好,因为!query.equals(null)
会在查询实际为空时抛出异常。 query != null
也易于阅读
答案 3 :(得分:2)
query != null
比较对象是否为null
。 query.equals("something")
比较该对象内部的值。 string == "something
“。所以在这种情况下使用query != null
。