Java字符串null检查!= null或!str.equals(null)?

时间:2013-02-13 21:02:44

标签: java string null null-check

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

String query ="abcd";

query != null vs !query.equals(null).

哪个更好?为什么?

4 个答案:

答案 0 :(得分:25)

第一个更好(以及唯一选项),因为第二个会抛出NPE,当你的价值是实际上是null就这么简单。

试试这个:

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

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

答案 1 :(得分:11)

!str.equals(null)

  1. 如果不抛出异常,则始终返回false,
  2. 如果str为null则抛出异常
  3. 空检查的目的是确保此代码str中的引用实际引用一个对象。如果它为null,则不能在其上调用任何方法,包括equals,而不会抛出NullPointerException ...空值检查的点是为了避免发生

    所以!str.equals(null)会导致问题,因为空检查是为了防止和根本不做你想的。永远不要这样做。

答案 2 :(得分:2)

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

答案 3 :(得分:2)

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