I was asked this question in interview. Which of the following is better to use
 MyInput.equals("Something");   
Or
"Something".equals(MyInput);
Thanks
I was asked this question in interview. Which of the following is better to use
 MyInput.equals("Something");   
Or
"Something".equals(MyInput);
Thanks
I would go for
"Something".equals(MyInput);
in this case if MyInput is null then it won't throw NullPointerException
Here we are sure that the object on which equals() is going to invoke is NOT NULL. 
And if you expect NullPointerException from your code to take some decision or throw/wrap it, then go for first.
There is no performance impact
 
    
    To be the contrarian.... :)
The first line might crash if MyInput is null, but that is just a code-convenience programmers (usually with a C hangover) use when they don't want to assert that 'MyInput' can be null.
If the second option is used, then maybe this line won't cause a NullPointerException, but the following lines might.
I believe that it is better know the possible state of your variables rather than rely on some code-construct that eases your conscience.
 
    
    Well how about we write our whole code upside down for a change?
Those who like their constants first, how would they feel when they see this?
if ( 2 == i) 
Hiding a NullPointerException, in my opinion, is never a benefit but a shortcoming in the design. 
If you never expect a NullPointerException but got one, then you need to let your application blow, follow the logs and see why this happened. It could be a business case that you missed altogether :)
 
If you optionally expect a null parameter and are not interested in handling it separately, then use a utility method like StringUtils.equals(...)
That said, I never allow any of my team members to use the second form because it is not consistent and not readable.
 
    
    The former will raise a NullPointerException if MyInput is null, while the latter will just return false, so the latter may be preferable in certain cases (or possibly the former, if you don't expect MyInput to be null and want to fail fast).
 
    
    If you want to be a real smarty-pants you could point out the possibility that MyInput could be a special subclass of String that has over-ridden the equals and hashcode methods. In that case the ordering of the statement is vitally important.
Here's a real-life example - how about if you want to compare Strings that have numbers in them and you want leading zeroes ignored? For example, Lecture1 would equal Lecture01.
 
    
    i would go to "something".equals(myInput); because variable can be null simply it throw a exception if variable is null .
 
    
    A good developer will always try to avoid a NullPointerException, hence the best answer would be to use "Something".equals(myInput).
