Constant value should always come first in comparison

Normal practice

Constant value comes second in comparison.

        private static final String COMPARE_VALUE = "VALUE123";
 
	public boolean compareIt(String input){
 
		if(input.equals(COMPARE_VALUE)){
			return true;
		}else{
			return false;
		}
	}

Problem

This is fine to compare a constant value with the above method, however it will potentially causing a NullPointerException, if user pass a “null” value for the comparison. For example :

if(input.equals(COMPARE_VALUE)) //hit NullPointerException if input is "null"

Best practice

Constant value should always come first in comparison.

        private static final String COMPARE_VALUE = "VALUE123";
 
	public boolean compareIt(String input){
 
		if(COMPARE_VALUE.equals(input)){
			return true;
		}else{
			return false;
		}
	}
Tags :

About the Author

mkyong
Founder of Mkyong.com and HostingCompass.com, love Java and open source stuff. Follow him on Twitter, or befriend him on Facebook or Google Plus. If you like my tutorials, consider make a donation to these charities.

Comments

  • Camilo

    If user pass a “null” value for the comparison there will be a null pointer exception inside the String#equals method when the constant is set first. There might be another good reason for that pattern since I have seen it in many projects.