If you compare two Strings in Java, normally you would use the equals method to compare them to see if they are similar.
This will be some common use case for input validations. However, if you don't do it properly it may cause you to throw a NullPointerException.
This is pretty much like common sense, but I've seen even more experienced developers make this mistake.
Let's consider the following code.
In myTestMethod, I'm checking if the String in the argument equals to another String that I know.
This code works perfectly fine if you run it, but this is not the best way to do this.
For some reason, if the input String to myTestMethod happens to be null, then this will throw a NullPointerException.
This is because, in the if condition, you are first using the unknown string's equals method to compare the other string. In this case, the unknown string is null, which means it doesn't exist. Thus a NullPointerException.
The better way to do it will be like follows.
In that case, you are always invoking the equals method of a String that you are pretty sure it exists. Usually, it could be a constant or a new String object.
If you are not really sure either of them exists, so you better to check for null for the String that you are trying to invoke the equals method of.
Happy coding!
This will be some common use case for input validations. However, if you don't do it properly it may cause you to throw a NullPointerException.
This is pretty much like common sense, but I've seen even more experienced developers make this mistake.
Let's consider the following code.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | public class DemoApplication { final static String theStringIknow = "Hello"; public static void myTestMethod(String someString) { //do not do this if (someString.equals(theStringIknow)) { System.out.println("Same same"); } } public static void main(String[] args) { String testString = "Hello"; myTestMethod(testString); } } |
In myTestMethod, I'm checking if the String in the argument equals to another String that I know.
This code works perfectly fine if you run it, but this is not the best way to do this.
For some reason, if the input String to myTestMethod happens to be null, then this will throw a NullPointerException.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | public class DemoApplication { final static String theStringIknow = "Hello"; public static void myTestMethod(String someString) { //do not do this if (someString.equals(theStringIknow)) { System.out.println("Same same"); } } public static void main(String[] args) { String testString = null; myTestMethod(testString); } } |
Exception in thread "main" java.lang.NullPointerException
at com.example.demo.DemoApplication.myTestMethod(DemoApplication.java:7)
at...
This is because, in the if condition, you are first using the unknown string's equals method to compare the other string. In this case, the unknown string is null, which means it doesn't exist. Thus a NullPointerException.
The better way to do it will be like follows.
if (theStringIknow.equals(someString)) { System.out.println("Same same"); }
In that case, you are always invoking the equals method of a String that you are pretty sure it exists. Usually, it could be a constant or a new String object.
If you are not really sure either of them exists, so you better to check for null for the String that you are trying to invoke the equals method of.
if (someString != null && someString .equals(someOtherString)) { System.out.println("Same same"); }
Happy coding!
Comments
Post a Comment