在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.