How can I check a string against null in java? I am using
stringname.equalsignorecase(null)
but it's not working.
string == null compares if the object is null. string. equals("foo") compares the value inside of that object. string == "foo" doesn't always work, because you're trying to see if the objects are the same, not the values they represent.
You can use the IsNullOrWhiteSpace method to test whether a string is null , its value is String. Empty, or it consists only of white-space characters.
== and !=The comparison and not equal to operators are allowed with null in Java. This can made useful in checking of null with objects in java.
The isEmpty() method checks whether a string is empty or not. This method returns true if the string is empty (length() is 0), and false if not.
string == null
compares if the object is null. string.equals("foo")
compares the value inside of that object. string == "foo"
doesn't always work, because you're trying to see if the objects are the same, not the values they represent.
Longer answer:
If you try this, it won't work, as you've found:
String foo = null; if (foo.equals(null)) { // That fails every time. }
The reason is that foo is null, so it doesn't know what .equals is; there's no object there for .equals to be called from.
What you probably wanted was:
String foo = null; if (foo == null) { // That will work. }
The typical way to guard yourself against a null when dealing with Strings is:
String foo = null; String bar = "Some string"; ... if (foo != null && foo.equals(bar)) { // Do something here. }
That way, if foo was null, it doesn't evaluate the second half of the conditional, and things are all right.
The easy way, if you're using a String literal (instead of a variable), is:
String foo = null; ... if ("some String".equals(foo)) { // Do something here. }
If you want to work around that, Apache Commons has a class - StringUtils - that provides null-safe String operations.
if (StringUtils.equals(foo, bar)) { // Do something here. }
Another response was joking, and said you should do this:
boolean isNull = false; try { stringname.equalsIgnoreCase(null); } catch (NullPointerException npe) { isNull = true; }
Please don't do that. You should only throw exceptions for errors that are exceptional; if you're expecting a null, you should check for it ahead of time, and not let it throw the exception.
In my head, there are two reasons for this. First, exceptions are slow; checking against null is fast, but when the JVM throws an exception, it takes a lot of time. Second, the code is much easier to read and maintain if you just check for the null pointer ahead of time.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With