4

在java中检查非空值的最佳方法是什么?

String query ="abcd";

query != null对比 !query.equals(null).

哪个更好?为什么?

4

4 回答 4

26

第一个更好(也是唯一的选择),因为第二个会抛出NPE,当你的价值实际上是null. 就如此容易。

试试这个:

String str = null;
str.equals(null);  // will throw `NPE`.

所以基本上,您想要执行的测试会NullPointerException在第二种情况下触发 a 。所以,别无选择。

于 2013-02-13T21:04:10.887 回答
11

!str.equals(null)将要

  1. 如果它没有抛出异常,则总是返回 false,并且
  2. 如果 str 为空,则抛出异常

空值检查的目的是确保在此代码中的引用str实际上是指一个对象。如果它为空,则不能在其上调用任何方法,包括equals,而不抛出NullPointerException... 空检查的目的是避免发生。

所以!str.equals(null)导致非常问题的空检查旨在防止并且根本不做您认为的事情。永远不要这样做。

于 2013-02-13T21:08:23.960 回答
2

query != null更好,因为!query.equals(null)当查询实际上为空时会抛出异常。也query != null很容易阅读

于 2013-02-13T21:06:19.500 回答
2

query != null比较对象是否为null. query.equals("something")比较该对象内部的值。string == "something“。所以在这种情况下使用query != null.

于 2013-02-13T21:09:27.887 回答