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

yon*_*awa 4 java string null null-check

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

String query ="abcd";
Run Code Online (Sandbox Code Playgroud)

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

哪个更好?为什么?

Roh*_*ain 26

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

试试这个:

String str = null;
str.equals(null);  // will throw `NPE`.
Run Code Online (Sandbox Code Playgroud)

所以基本上,你想要执行的测试本身会触发NullPointerException第二种情况.所以,别无选择.

  • 对于那些不知道首字母缩略词的人,NPE = NullPointerException (5认同)
  • @RohitJain:我做了:`String test ="aa"; System.out.println(test.equals(null));`.Prints`false` (2认同)

dje*_*lin 11

!str.equals(null)

  1. 如果不抛出异常,则总是返回false
  2. 如果str为null则抛出异常

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

因此,!str.equals(null)导致非常问题的空检查旨在防止并且根本不执行您的想法.永远不要这样做.