Sorry if my question is silly or not it doesnot matter. But i just want to know what will happen in these two conditions.
public class Test {
public static void main(String[] args)
{
String str="test";
if(str.equals("test")){
System.out.println("After");
}
if("test".equals(str)){
System.out.println("Before");
}
}
}
Both are giving same results only. But i know there is some reasons.I dont know about that. What is difference between these two conditions?
There are no difference between them at all. Many programmers use the 2nd way just to make sure that they don't get a NullPointerException
. That's all.
String str = null;
if(str.equals("test")) { // NullPointerException
System.out.println("After");
}
if("test".equals(str)) { // No Exception will be thrown. Will return false
System.out.println("Before");
}
Second one does not throw NullPointerException
. But again it is considered as bad code because it might happen that str
is null
and you do not detect that bug at this point instead you detect it somewhere else
1
since it helps you to find bugs in the program at early stage.Else add check for null
if str
is null
then you will be able to make out are strings really not equal or is second string does not present
if(str == null){
//Add a log that it is null otherwise it will create confusion that
// program is running correctly and still equals fails
}
if("test".equals(str)){
System.out.println("Before");
}
For first case
if(str.equals("test")){//Generate NullPointerException if str is null
System.out.println("After");
}
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