Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to check a string against null in java?

Tags:

java

string

null

How can I check a string against null in java? I am using

stringname.equalsignorecase(null) 

but it's not working.

like image 243
user351809 Avatar asked May 27 '10 11:05

user351809


People also ask

Can we compare null with string in Java?

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.

How do you check if a string is empty or null?

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.

Can you use == for null in Java?

== 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.

How do you check if a string is not empty 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.


1 Answers

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.

like image 151
Dean J Avatar answered Oct 07 '22 21:10

Dean J