在Java中检查非空值最好的方法是什么?
String query ="abcd";
query != null
和 !query.equals(null)
,哪个更好?为什么?
两者的区别在于前者只是检查变量是否为空,后者则会调用equals方法来比较。因此,query != null
更加简洁明了,而且执行速度更快。同时,使用!=运算符还可以避免空指针异常。所以说,在大多数情况下,query != null
更好。
在Java中检查非空值最好的方法是什么?
String query ="abcd";
query != null
和 !query.equals(null)
,哪个更好?为什么?
两者的区别在于前者只是检查变量是否为空,后者则会调用equals方法来比较。因此,query != null
更加简洁明了,而且执行速度更快。同时,使用!=运算符还可以避免空指针异常。所以说,在大多数情况下,query != null
更好。
第一个选项是更好的选择(也是唯一的选择),因为第二个选项在您的值实际上为null
时会抛出NPE
。就这么简单。
试试这个:
String str = null;
str.equals(null); // will throw `NPE`.
所以基本上,你想要执行的测试在第二种情况下会触发NullPointerException
,所以没有选择。
String test = "aa"; System.out.println(test.equals(null));
。输出结果为false
。 - CratylusString test = null;
试一试,看看会发生什么... - Jesse WebbString s= null; s.equals(null)
。 - PermGenError!str.equals(null)
的结果会
进行空值检查的目的是确保引用,在此代码中为str
,实际上指向一个对象。如果它为null,则无法对其调用任何方法,包括equals
,否则将引发NullPointerException
...这就是进行空值检查的目的。
因此,!str.equals(null)
会导致空值检查旨在防止的问题,根本不会产生预期的效果。永远不要这样做。
str.equals(null)
始终返回false的观点,但我的回答对具体问题不是很清晰.. :) - PermGenErrorquery != null
最好改为!query.equals(null)
,因为当查询实际上为空时,!query.equals(null)
会抛出异常。此外,query != null
易于阅读。
query != null
用于比较对象是否为null
。 query.equals("something")
用于比较对象中的值。 string == "something"
,所以在这种情况下应该使用 query != null
。
String
对象吗? - Rohit JainString
类型?据我所知,它没有原始类型的等价物... - Jesse Webb