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